preg_replace两个带空格的箭头

时间:2017-04-04 11:14:16

标签: php preg-replace str-replace

我有一个'>的字符串>”。我正在尝试替换'test> >”使用'test>>>>'。

str_replace不会替换任何东西,所以我尝试使用:

$string = preg_replace("/[\>\ \>]/",">>>>", $string);

但是这会替换字符串中的所有空格以及箭头。

因此字符串最终会像'test>>>>>>>>'而不是'test >>>>'

2 个答案:

答案 0 :(得分:1)

/[\>\ \>]/正则表达式匹配单个字符>,空格或>preg_replace替换多次出现(默认情况下)。

如果没有特定的上下文要求,您可以使用str_replace之类的

$s = "test > >";
echo str_replace('> >', '>>>>', $s);

请参阅PHP demo

如果您只想替换> >未跟随或先于>,您可以尝试

echo preg_replace("/(?<!> )> >(?!\s*>)/",">>>>", $s);

请参阅another PHP demoregex demo

如果(?<!> )前面有>和一个空格,那么> lookbehind会使匹配失败,如果这里有0+空格,(?!\s*>)前瞻会使匹配失败在>之后跟> >

答案 1 :(得分:0)

$input_lines = "I have a string which has '> >'. I am trying";
echo preg_replace("/(?<!> )> >(?!\s*>)/", "-----", $input_lines);

输出将是: 我有一个带'----'的字符串。我正在尝试

preg_replace(REG_PATTERN,REPLACEMENT,INPUT_STRING);返回所需的输出。

它适用于任何包含'&gt;的字符串&gt;',或者您的字符串中可能有双倍空格,您可以通过增加&gt;之间的空格来替换它。和&gt;在正则表达式中。  快乐的编码。