preg_replace与PHP

时间:2011-08-05 20:29:19

标签: php regex

我想替换&#34;:&#34;用&#34; \ xEF \ xBC \ x9A&#34;但是,我不希望这样做:接下来是&#34; http&#34;,&#34; https&#34;,以及格式为@ [{numbers}:{numbers}的字符串:{some text }]。 我所拥有的并不像(?<!@\[\d)那样真正起作用,并不会检查它之后的内容。我目前的实现仅适用于@[1:2:text]之类的内容。谢谢!

$string=preg_replace('#(?<!https)(?<!http)(?<!@\[\d)(?<!@\[\d:\d):#', "\xEF\xBC\x9A", $string);

2 个答案:

答案 0 :(得分:1)

试试这个:

preg_replace('/(@\[\d+:\d+:[^]]*]|https?:)|:/e', '"$1"?"$1":"\xEF\xBC\x9A"', $string);

答案 1 :(得分:0)

试试这个正则表达式:

(?<!@\[(?::?[\d]{0,5}){1,2})(?<!https?):

它应匹配“”的第一个和第二个实例。

: test: http: @[1:2:text]

使用示例:

$string = preg_replace('/(?<!@\[(?::?[\d]{0,5}){1,2})(?<!https?):/', '\xEF\xBC\x9A', $string);