[英]How to convert eregi to preg_match?
我正在使用一個使用的lib
eregi($match="^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$",$line,$matches)
但由於eregi現在已被棄用,我想將上面的內容轉換為preg_match。 我嘗試了如下
preg_match($match="/^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$/i",$line,$matches)
但是它會Unknown modifier '[' in
filename.php中輸出一個錯誤,說明Unknown modifier '[' in
任何想法如何解決這個問題?
謝謝
如果你使用/
作為正則表達式分隔符(即preg_match('/.../i', ...)
),你需要轉義模式中的/
任何實例,或者php會認為它指的是結尾的圖案。
您還可以使用不同的字符(例如%
作為分隔符:
preg_match('%^http/[0-9]+\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)$%i',$line,$matches)
您需要轉義正則表達式內的分隔符 (在本例中為/
):
"/^http\\/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$/i"
但你也可以選擇一個不同的分隔符,如~
:
"~^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$~i"
你可以試試:
preg_match("@^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$@i",$line,$matches)
$match=
/
作為分隔符, http
后面的正則表達式中有另一個/存在,這有效地標記了正則表達式的結束。 當PHP看到[
之后它抱怨。 @
或轉義/
后http
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.