我正试图找到一种方法来替换这样的文字:
text here ABC -some text here- CED text here
到
text here ABC -replaced text- CED text here
或-----------------------------------
text here ABC - some description here- CED text here
到
text here ABC - replaced text- CED text here
这意味着,我们将开始以“ABC”开头并以“CED”结尾的文本的一部分,用“替换文本”替换它们之间的所有文本。 我怎样才能做到这一点? 感谢。
答案 0 :(得分:6)
要替换ABC
和CED
之间的内容,您可以使用正面观察和正面前瞻来保留 ABC < / em>和 CED ,只需将其替换为您想要的内容即可。如果两者之间的文字也包含换行符,则可以使用s
修饰符强制点.
也匹配换行符。
$str = 'text here ABC -some text here-
CED text here';
$str = preg_replace('/(?<=ABC).*?(?=CED)/si', ' foo ', $str);
echo $str;
请参阅Working demo
正则表达式:
(?<= look behind to see if there is:
ABC 'ABC'
) end of look-behind
.*? any character except \n (0 or more times)
(?= look ahead to see if there is:
CED 'CED'
) end of look-ahead
答案 1 :(得分:2)
<?php
$myText = 'text here ABC -some text here- CED text here';
$myText = preg_replace('/ABC(.+)CED/', 'ABC - replaced text - CED', $myText);
echo $myText;