在php中,我想搜索[ ]
之间的文本,如果这是我想要的文本,请用新文本替换
例如:
dear [code_user] your new order code is [code_order]
最终结果应该是:
dear john your new order code is 5504
我确实是这样的:但是它重复了很多次却没有用
$message = $smsTM->text; // we should send sms by Suitable template
$message = preg_replace('/[code_user]/', $userName, $message);
$message = preg_replace('/[code_reserve]/', 'hp', $message);
任何解决方案?
答案 0 :(得分:3)
使用简单的str_replace()
而不是正则表达式怎么办?使用str_replace()
,您可以使用多个字符串作为搜索并替换数组。参见https://www.php.net/manual/en/function.str-replace.php
<?php
$string = 'dear [code_user] your new order code is [code_order]';
$result = str_replace(['[code_user]','[code_order]'],['john','5504'], $string);
echo $result;
?>
工作演示: https://3v4l.org/ChCfc
答案 1 :(得分:2)
这里有我之前写的内容,但是使用了{{ }}
https://gist.github.com/lcherone/f7ef70406c7c84aeb7d64566afb63bb8,
以下更改为使用[ ]
允许[placeholder]
或[ placeholder ]
<?php
$vars = [
'code_user' => 'Loz',
'code_order' => 5504
];
$template = 'Dear [code_user] your new order code is [code_order]!';
$result = preg_replace_callback('/\[[ ]{0,}([\w\_-]{1,})[ ]{0,}\]/', function ($match) use ($vars) {
return array_key_exists($match[1], $vars) ? $vars[$match[1]] : '';
}, $template);
// Dear Loz your new order code is 5504!
echo $result;
答案 2 :(得分:0)
您可以将str_replace()
与数组一起使用,以替换多次出现的内容,如下所示:
<?php
$your_string = "dear [code_user] your new order code is [code_order]. xxxxxxxx [code_user]";
$final_string = str_replace(array('[code_user]', '[code_order]'), array('John Doe', '123456'), $your_string);
echo $final_string;
?>