簡體   English   中英

如何將eregi轉換為preg_match?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM