我知道这对大多数人来说都很容易,但这不适合我,正则表达式让我很痛苦。
我需要的是替换元素中'%s'...'%s'中的所有字符串:
原文:我已阅读并接受%s预约条款%s
我想要的是替换所有'%s条款预订%s',例如:
<a href="..." id="enlaceCondiciones" target="_blank" >Condiciones de venta</a>
提前致谢。
PD:'%s'中的文本 - '%s'会根据用户语言而变化,因此在这种情况下简单的str_replace不是解决方案
答案 0 :(得分:1)
$output = preg_replace("/%s(.+)%s/", "<a href="..." id="enlaceCondiciones" target="_blank" >$1</a>", '%sthe terms of booking%s');
$输出:
<a href="..." id="enlaceCondiciones" target="_blank" >the terms of booking</a>
答案 1 :(得分:0)
我假设您正在黑客攻击一个基本的模板系统,并希望替换字符串中的所有%s...%s
标记,而不必知道哪些标记存在。你需要分3个步骤完成。
找到所有标签:
preg_match_all('/(%s[^%]%s)/', $input, $matches);
获取替代品。这取决于您的代码,但基本上只是循环遍历$matches
。
替换标签,您可以通过将搜索和替换加载到数组中,在一个批处理中执行此操作:
str_replace(array('%sone%s','%stwo%s'), array('uno', 'dos'), $input);
作为一个注释,您应该尽可能尝试使用基本的字符串函数。在执行简单操作时,正则表达式会导致处理和内存使用的开销。