【发布时间】:2015-09-02 21:44:34
【问题描述】:
我有一段被读入的内容,它包含许多字符串,如{{some_text}},我想做的是找到所有这些出现并用数组中的另一个值替换它们,例如@987654322 @。
我尝试过使用 preg_replace 但不确定如何将找到的文本放在括号之间并将其用于替换值。
$body = "This is a body of {{some_text}} text from a book.";
$text["some_text"] = "really cool";
$parsedBody = preg_replace("\[{].*[}]/U", $text[""], $body);
如您所见,我试图从字符串中取出 some_texttext 并使用它来调用数组中的元素,这个示例非常基础,因为 $bodyvalue 大得多,而 @987654326 @也有几百个元素。
【问题讨论】:
-
使用
preg_replace_callback。 -
或者你应该投资一个真正的模板库。
-
@Barmar,谢谢你的建议,我现在看看
preg_replace_callback,因为我需要的是使用模板库。 -
另一种方法是使用 preg_split 和 PREG_SPLIT_DELIM_CAPTURE 选项,映射数组并替换奇数项(使用关联数组)并内爆。
-
@Barmar,在我的自定义代码变得过于复杂后采纳了您的建议,现在通过 composer 使用 twig,让生活更轻松,谢谢。
标签: php regex preg-replace