关于UC的几个疑问!

craboy1 2009-03-31 10:41:08
!isset($matches['host']) && $matches['host'] = '';
这个语法怎么不理解
变量&&变量 =变量
UC、UCHOME都出现过,
这句作用是什么?
第二个是一个正则
"\@?\\\$[a-zA-Z_]\w*(?:\[[\w\.\"\'\[\]\$]+\])*";
(?:这块又怎么理解?
...全文
118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序猿之殇 2009-04-01
  • 打赏
  • 举报
回复
(?:pattern)
匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用.
不是你想像的哪样,举例说明:

$str = "asfdassafas12133asfdsadf";
preg_match_all("/(?:[\d]+)/i", $str, $matches);
var_dump($matches);
/*
array(1) {
[0]=>
array(1) {
[0]=>
string(5) "12133"
}
}
*/
preg_match_all("/([\d]+)/i", $str, $matches1);
var_dump($matches1);
/*
array(2) {
[0]=>
array(1) {
[0]=>
string(5) "12133"
}
[1]=>
array(1) {
[0]=>
string(5) "12133"
}
}
*/
craboy1 2009-04-01
  • 打赏
  • 举报
回复
多谢!只能说自己是井底之蛙!
DreamHK 2009-03-31
  • 打赏
  • 举报
回复
(?:\[[\w\.\"\'\[\]\$]+\])这块是一个整体
?表示0个或1个字符
这里的很多\基本都是转义的..


!isset($matches['host']) && $matches['host'] = '';
如果!isset($matches['host'])为真,则执行后面的$matches['host'] = '',否则不执行.
itian 2009-03-31
  • 打赏
  • 举报
回复
漏看了

$matches['host'] = '';
你确定是这么写的吗?不是$matches['host'] == '';

itian 2009-03-31
  • 打赏
  • 举报
回复
!isset($matches['host']) && $matches['host'] = '';

如果没有设置$matches['host'] 或者$matches['host'] 为空
有什么问题吗?
craboy1 2009-03-31
  • 打赏
  • 举报
回复
谢大侠,问题1解决了!
问题2还是不解:
?是加在(的后边,?表示0个或1个字符 ,但是指那个字符是0或1个,这块不解!

meirenxing 2009-03-31
  • 打赏
  • 举报
回复
3楼是正解,&&是短路与 && 前面的 !isset($matches['host'])如果为真,才会执行后面的赋值 $matches['host'] = '', 否则不执行。这样写可以提高效率,但是代码的可读性相对差一点。并不是要做两次判断。

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧