PHP正则表达式中“〜”字符表示什么?

时间:2014-02-07 09:57:55

标签: php regex preg-match-all

以下“〜”字符的含义是什么?:

preg_match_all("~<img [^>]+>~", $inputw, $output);

我的猜测是它们是开始和结束标记,例如^和$。

3 个答案:

答案 0 :(得分:8)

这是delimiter

分隔符可以是任何非字母数字,非反斜杠,非空白字符。

答案 1 :(得分:4)

正如Nambi所说,你可以自由选择正则表达式中的分隔符。但是,如果分隔符出现在模式中,则必须进行转义。了解这一点,想象以下情况

'/\/var\/www\/test/' # delimited with /
'~/var/www/test~' # delimited with ~

最后一个不需要转义/,因为分隔符现在是~。很清洁不是吗?

作为一般准则,我们鼓励您选择一个不是模式本身模式的分隔符,我猜~被广泛分发为/的替代,因为它很少出现在现实世界模式。

答案 2 :(得分:0)

他们没有告诉你的肮脏的小分隔符秘密 - &gt;
http://uk.php.net/manual/en/regexp.reference.delimiters.php

示例:

成对分隔符( raw:\d{2}Some\{33\}\w{5}

{\d{2}Some\\{33\\}\w{5}}解析为\d{2}Some\\{33\\}\w{5}
{\d{2}Some\{33\}\w{5}}解析为\d{2}Some{33}\w{5}

未配对的分隔符( raw:\d{2}Some\+33\+\w{5}

+\d{2}Some\+33\+\w{5}+解析为\d{2}Some+33+\w{5}
+\d{2}Some\\+33\\+\w{5}+无法解析,因为分隔符是未转义的。