【发布时间】:2011-03-28 05:25:31
【问题描述】:
我在 preg_match() 函数中遇到了这个奇怪的错误:
警告:preg_match():编译失败:偏移 54 处的字符类范围乱序
造成这种情况的行是:
preg_match("/<!--GSM\sPER\sNUMBER\s-\s$gsmNumber\s-\sSTART-->(.*)<!--GSM\sPER\sNUMBER\s-\s$gsmNumber\s-\sEND-->/s", $fileData, $matches);
这个正则表达式的作用是解析一个 HTML 文件,只提取以下部分:
<!--GSM PER NUMBER - 5550101 - START-->
和:
<!--GSM PER NUMBER - 5550101 - END-->
您对可能导致此错误的原因有提示吗?
【问题讨论】:
-
检查变量 $gsmNumber,这可能是原因。
-
我推荐阅读这个stackoverflow.com/questions/3148240/… - 您可能已经尝试在字符类中定义数字范围。
-
我是为 [a-Z] 得到的(注意大写)。当它说范围时,它的意思只是
[a-z]输入正则表达式。