【问题标题】:php: preg_replace_callback remove detected content with its patternsphp: preg_replace_callback 删除检测到的内容及其模式
【发布时间】:2018-01-13 07:15:40
【问题描述】:

这是我的字符串。

$string = '{TE:Hi}';

这是我的 preg_replace_callback 代码:

echo preg_replace_callback('#(?<={TE:)(.*?)(?=})#is', function($matches){
        return '';
    }, $string);

我应该使用 preg_replace_callback 因为我在回调函数中使用了另一个函数。 此代码可以替换检测到的内容并将其删除。 但不能删除它的模式( {TE: 和 } ) 这只会从字符串中删除“Hi”,但我想删除“{TE:Hi}”。 “嗨”是动态的,它可以是别的东西。而且这种形式在字符串中可能有几种模式。

提前致谢。

【问题讨论】:

    标签: php regex preg-replace-callback


    【解决方案1】:

    如果要删除完整的大括号表达式,则不应使用 (?&lt;=(?= 环视。只需匹配:

    #{TE:(.*?)}#is
    

    请注意,这将影响 $matches 数组中提供给回调函数的内容。

    它将是 ["{TE:Hi}", "Hi"] 而不是 ["Hi", "Hi"]

    【讨论】:

      猜你喜欢
      • 2016-11-23
      • 1970-01-01
      • 2018-10-28
      • 2010-10-11
      • 2018-06-26
      • 2014-01-07
      • 2011-10-10
      • 2012-09-19
      • 2015-03-30
      相关资源
      最近更新 更多