我注意到一些用戶使用@與「/」在PHP中的正則表達式,是兩者之間有區別嗎?我假設用戶首選處理字符串中的「/」。PHP正則表達式@ VS/
$body = preg_replace("@<script[^>]*>.+</script[^>]*>@si", "", $body);
VS
$body = preg_replace("/<script[^>]*>.+<\/script[^>]*>/si", "", $body);
我注意到一些用戶使用@與「/」在PHP中的正則表達式,是兩者之間有區別嗎?我假設用戶首選處理字符串中的「/」。PHP正則表達式@ VS/
$body = preg_replace("@<script[^>]*>.+</script[^>]*>@si", "", $body);
VS
$body = preg_replace("/<script[^>]*>.+<\/script[^>]*>/si", "", $body);
作爲每PHP Manual on regex delimiters
甲分隔符可以是任何非字母數字的,非反斜槓,非空白字符 。
所以基本上使用斜線或@
或#
沒有區別。但請記住,選擇的分隔符不得出現在正則表達式本身中,否則您將需要轉義該字符。
提示:由於PCRE允許any non-alphanumeric, non-backslash, non-whitespace
作爲分隔符,有時它是更好地使用控制字符作爲分隔符時,你無法預知使用正則表達式的內容。見下面的例子:
$repl = preg_replace('^K^foo^K', 'bar', 'foo.txt');
下面這段代碼是使用控制字符^K
(上殼類型爲ctrl-V-K
)
使用/
使得它更難把/
在正則表達式或更換。使用@
會使@
難以在正則表達式或替換中使用。除此之外,沒有區別。
沒有區別,只是習慣 –
你是正確的。這兩個都是正則表達式的有效分隔符。 – Mathletics
http://php.net/manual/en/regexp.reference.delimiters.php –