免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7922 | 回复: 8
打印 上一主题 下一主题

这个能否算是PHP的一个BUG? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-09-09 16:41 |只看该作者 |倒序浏览
本帖最后由 zr0128 于 2015-09-09 16:42 编辑

今天测试一段正则,如下。

  1. preg_match_all('#(?>\d+)(?!;)#', $c, $m);
复制代码
然后突然又想着测试另外一条正则,于是就把这条复制一行,原有的行就注释掉。

  1. // preg_match_all('#(?>\d+)(?!;)#', $c, $m);
  2. preg_match_all('#(?>\d+)(?!;)#', $c, $m);
复制代码
那么问题来了,运行文件,我发现打注释那行往下的代码原样输出,没有解析。

很奇怪,仔细看那个正则,里边包含了“?>”这个PHP的文件结束符,正常情况下是没有问题的,但
只要包含文件结束符的这行代码一被注释掉(单行注释,多行注释无效),那么被注释掉的代码
之后所有代码就不会解析了。

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-12 06:20:00
2 [报告]
发表于 2015-09-14 17:44 |只看该作者
  1. $a="0";

  2. if(empty($a)){
  3.    
  4.     echo "empt";
  5.    
  6. }
复制代码
这个算吗?

论坛徽章:
0
3 [报告]
发表于 2015-09-15 13:12 |只看该作者
\
加这个转义符号就行了

论坛徽章:
0
4 [报告]
发表于 2015-09-21 17:13 |只看该作者
回复 2# yakczh_cu


    两码事儿,你这是函数基本用法的问题。
    我发的是语法解析的问题,看起来无大碍,但也是有问题的。

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
5 [报告]
发表于 2015-09-27 08:20 来自手机 |只看该作者
哦,基本功不够啊

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
6 [报告]
发表于 2015-10-16 08:19 |只看该作者
试验了一下,还真是如此。
应该是php解析器bug

论坛徽章:
2
天蝎座
日期:2013-09-17 18:34:58射手座
日期:2013-09-25 10:46:41
7 [报告]
发表于 2015-10-19 13:21 |只看该作者
哦,基本功不够啊

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
8 [报告]
发表于 2015-12-14 21:54 |只看该作者
确实是这样,应该是个bug:

a@test:~ % php aa.php
abcdef
abcdef';
echo 'This is end!';
?>
a@test:~ % cat aa.php
<?php
echo "abcdef\n";
//echo '?>abcdef';
echo 'This is end!';
?>

论坛徽章:
0
9 [报告]
发表于 2015-12-28 18:22 |只看该作者
<?php
// ?>
echo "test..."
?>

其实也不算bug, ?>属于php的解析定界符,这个优先权是要高于一切的,所以你才能在html代码中混写PHP,如果这个定界符要低于其他注释什么的,那会出大问题的.
正则你就要规范一些,特殊字符都要加反斜线.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP