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