我有一个字符串有'>>'。我试图用'测试>>>>'替换'test'>''。preg_replace两个箭头和空格
str_replace函数犯规更换任何东西,所以我已经尝试使用:
$string = preg_replace("/[\>\ \>]/",">>>>", $string);
但这种替换字符串中的所有空格以及箭头。
所以串结束等的'test>>>>>>>>'
代替'test >>>>'
我有一个字符串有'>>'。我试图用'测试>>>>'替换'test'>''。preg_replace两个箭头和空格
str_replace函数犯规更换任何东西,所以我已经尝试使用:
$string = preg_replace("/[\>\ \>]/",">>>>", $string);
但这种替换字符串中的所有空格以及箭头。
所以串结束等的'test>>>>>>>>'
代替'test >>>>'
的/[\>\ \>]/
正则表达式的单个字符要么是>
,一个空格或>
匹配和替换preg_replace
多次出现(默认)。
如果没有特殊情况下的需求,你可以使用一个str_replace
像
$s = "test > >";
echo str_replace('> >', '>>>>', $s);
如果你想只替换> >
不是之后或之前与>
,您可以尝试
echo preg_replace("/(?<!>)> >(?!\s*>)/",">>>>", $s);
请参阅another PHP demo和regex demo。
如果>
前面带有>
和空间,(?!\s*>)
先行将失败的比赛,如果这里有0+空格,接着与>
> >
后(?<!>)
回顾后会失败的比赛。
你的答案是有效的,但是没有使用字符串,它对我的字符串有问题 – user3312792
字符串是从数组中取出的,当我打印时我可以看到'>>'但str_replace或preg_replace不会找到带有空格的箭头,是有没有办法在我尝试之前清洁琴弦? – user3312792
你的意思是你有一个很难的空间?然后使用'preg_replace(“/> \ s>/u”,“>>>>”,$ s);'。如果在'>'s之间可以有多于1个空格,则在'\ s'后面加'+'。如果你不想匹配'>',linebreak char,'>',用'\ h'替换'\ s'。 –
$input_lines = "I have a string which has '> >'. I am trying";
echo preg_replace("/(?<!>)> >(?!\s*>)/", "-----", $input_lines);
输出将是: 我有有一个字符串 '----'。我正在尝试
preg_replace(REG_PATTERN,REPLACEMENT,INPUT_STRING);返回所需的输出。
它可以与任何具有'>>'的字符串一起使用,或者您的字符串中可能有双倍空间,您可以通过在正则表达式中增加>和>之间的空格来替换该字符串。 快乐编码。
“str_replace不会取代任何东西” - 是的。事实上,它明确地表明它打算做什么。所以,当我支持你采取不同的方法时,当这种不同的方法失败时,你应该回到原始代码并提出一个问题:str_replace的语法要简单得多,而且能够在这里解决任务。正则表达式非常有用,但非常强大,难于理解并且容易出错*。 – symcbean