php搜索[]并检查其数据并用新文本替换

时间:2019-07-03 05:30:06

标签: php

在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);

任何解决方案?

3 个答案:

答案 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;

工作示例:https://3v4l.org/W2GFO

答案 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;
?>