如何在包含两个不同字符的字符串中查找和替换相同的字符? I.E.第一次出现一个字符,第二次出现另一个字符,一次出现整个字符串?
这就是我尝试做的事情(因此用户无需在体内输入html):我在这里使用了preg_replace,但我还是愿意使用其他任何内容。
$str = $str = '>>Hello, this is code>> Here is some text >>This is more code>>';
$str = preg_replace('#[>>]+#','[code]',$str);
echo $str;
//output from the above
//[code]Hello, this is code[code] Here is some text [code]This is more code[code]
//expected output
//[code]Hello, this is code[/code] Here is some text [code]This is more code[/code]
但问题是,>>
都被[code]
取代。是否有可能以某种方式将第一个>>
替换为[code]
,将第二个>>
替换为[/code]
以获得整个输出?
php是否可以一次性完成这项工作?怎么办呢?
答案 0 :(得分:2)
$str = '>>Hello, this is code>> Here is some text >>This is more code>>';
echo preg_replace( "#>>([^>]+)>>#", "[code]$1[/code]", $str );
如果您输入以下内容,则上述操作将失败:
>>Here is code >to break >stuff>>
要解决此问题,请使用否定前瞻:
#>>((?!>[^>]).+?)>>#
将是你的模式。
echo preg_replace( "#>>((?!>[^>]).+?)>>#", "[code]$1[/code]", $str );