php:preg_replace_callback删除检测到的内容及其模式

时间:2017-08-05 13:02:33

标签: php regex preg-replace-callback

这是我的字符串。

$string = '{TE:Hi}';

这是我的preg_replace_callback代码:

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

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

提前感谢。

1 个答案:

答案 0 :(得分:0)

如果要删除完整的支撑表达式,则不应使用(?<=(?=环视。只是匹配:

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

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

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