我正在使用一个使用的lib
eregi($match="^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$",$line,$matches)
Run Code Online (Sandbox Code Playgroud)
但由于eregi现在已被弃用,我想将上面的内容转换为preg_match.我尝试了如下
preg_match($match="/^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$/i",$line,$matches)
Run Code Online (Sandbox Code Playgroud)
但它会引发一个错误,说Unknown modifier '[' infilename.php
任何想法如何解决这个问题?
谢谢
如果您使用/的正则表达式分隔符(即preg_match('/.../i', ...)),你需要逃避的任何实例/在你的模式或PHP将认为它指的是模式的结束.
您还可以使用不同的字符,例如%分隔符:
preg_match('%^http/[0-9]+\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)$%i',$line,$matches)
Run Code Online (Sandbox Code Playgroud)
您需要转义正则表达式中的分隔符(在本例中为/):
"/^http\\/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$/i"
Run Code Online (Sandbox Code Playgroud)
但您也可以选择不同的分隔符,如~:
"~^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$~i"
Run Code Online (Sandbox Code Playgroud)
你可以试试:
preg_match("@^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$@i",$line,$matches)
Run Code Online (Sandbox Code Playgroud)
$match=/作为分隔符,之后正则表达式中有另一个/现在http,这有效地标记了正则表达式的结束.当PHP看到[之后,它抱怨.@或转义/后http| 归档时间: |
|
| 查看次数: |
5833 次 |
| 最近记录: |