PHP实现编译器思路,使用preg_split分割字符串和注释

作者在 2016-08-19 15:14:09 发布以下内容
preg_split("/(\".*?\")/is", "good\n$str=\"字符串\";bye", -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

这样分割出来数组是:

=> [
     """
       good\n
       =
       """,
     ""字符串"",
     ";bye",
   ]
然后根据是不是引号"开头,如果是引号开头,则视为字符串

PHP开发 | 阅读 3246 次
文章评论,共1条
静夜思(作者)
2016-08-19 19:44
1
根据引号判断字符串需要用到后向否定断言,排除被转义的引号:

>>> preg_split("/((?<!\\\\)\".*?(?<!\\\\)\")/is", '$str="3\"33";echo $str;', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
=> [
     "$str=",
     ""3\"33"",
     ";echo $str;",
   ]
>>>
游客请输入验证码
浏览2781222次
文章归档