PHP替换特殊字符内的字符串

时间:2013-12-09 17:38:56

标签: php replace expression

我知道这对大多数人来说都很容易,但这不适合我,正则表达式让我很痛苦。

我需要的是替换元素中'%s'...'%s'中的所有字符串:

原文:我已阅读并接受%s预约条款%s

我想要的是替换所有'%s条款预订%s',例如:

<a href="..." id="enlaceCondiciones" target="_blank" >Condiciones de venta</a>

提前致谢。

PD:'%s'中的文本 - '%s'会根据用户语言而变化,因此在这种情况下简单的str_replace不是解决方案

2 个答案:

答案 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个步骤完成。

  1. 找到所有标签:

    preg_match_all('/(%s[^%]%s)/', $input, $matches);
    
  2. 获取替代品。这取决于您的代码,但基本上只是循环遍历$matches

  3. 替换标签,您可以通过将搜索和替换加载到数组中,在一个批处理中执行此操作:

    str_replace(array('%sone%s','%stwo%s'), array('uno', 'dos'), $input);
    
  4. 作为一个注释,您应该尽可能尝试使用基本的字符串函数。在执行简单操作时,正则表达式会导致处理和内存使用的开销。