php:preg_replace_callback 删除检测到的内容及其模式
php: preg_replace_callback remove detected content with its patterns
这是我的字符串。
$string = '{TE:Hi}';
这是我的 preg_replace_callback 代码:
echo preg_replace_callback('#(?<={TE:)(.*?)(?=})#is', function($matches){
return '';
}, $string);
我应该使用 preg_replace_callback 因为我在回调函数中使用了另一个函数。
此代码可以替换检测到的内容并将其删除。
但不能删除它的模式({TE: 和})
这只会从字符串中删除 "Hi" 但我想删除“{TE:Hi}”。
"Hi" 是动态的,它可以是别的东西。并且字符串中可能有几种这种形式的模式。
提前致谢。
如果要删除完整的大括号表达式,则不应使用 (?<=
或 (?=
环视。刚好匹配:
#{TE:(.*?)}#is
请注意,这将影响 $matches
数组中提供给回调函数的内容。
它将是 ["{TE:Hi}", "Hi"]
而不是 ["Hi", "Hi"]
。
这是我的字符串。
$string = '{TE:Hi}';
这是我的 preg_replace_callback 代码:
echo preg_replace_callback('#(?<={TE:)(.*?)(?=})#is', function($matches){
return '';
}, $string);
我应该使用 preg_replace_callback 因为我在回调函数中使用了另一个函数。 此代码可以替换检测到的内容并将其删除。 但不能删除它的模式({TE: 和}) 这只会从字符串中删除 "Hi" 但我想删除“{TE:Hi}”。 "Hi" 是动态的,它可以是别的东西。并且字符串中可能有几种这种形式的模式。
提前致谢。
如果要删除完整的大括号表达式,则不应使用 (?<=
或 (?=
环视。刚好匹配:
#{TE:(.*?)}#is
请注意,这将影响 $matches
数组中提供给回调函数的内容。
它将是 ["{TE:Hi}", "Hi"]
而不是 ["Hi", "Hi"]
。