如何替换字符串中2个字符之间的特定文本

时间:2014-10-29 08:39:06

标签: php regex

我对正则表达式有疑问。我想替换字符串中包含2个字符的特定文本。

示例:

$my_string = "newtext!234@@random_text@@weludud";
$new_text  = 'replaced_text";

在myabove字符串中,我想替换我的字符@@之间的文本。所以在上面的字符串中我想用random_text替换random_text。

所以我的输出将是newtext!234@@replaced_text@@weludud

3 个答案:

答案 0 :(得分:2)

如果@@ text @@在字符串中只出现一次,则可以使用explode

$my_string = "newtext!234@@random_text@@weludud"; 
$new_text = 'replaced_text';
$var = explode('@@',$my_string); //create an array with 3 parts, the middle one being the text to be replaced

$var[1]=$new_text;

$my_string=implode('@@',$var);

答案 1 :(得分:0)

(?<=@@)(?:(?!@@).)*(?=@@)

试试这个。replace_text。见。演示。

http://regex101.com/r/sU3fA2/40

答案 2 :(得分:0)

$my_string = "newtext!234@@random_text@@weludud";
$replace = 'replaced_text'; 
$replaced_text = preg_replace('#(@)(.*)(@)#si', "$1$replace$3", $my_string);
echo $replaced_text;

Working demo