查找花括号内的文本并替换包含花括号的文本
Find text inside curly braces and replace text including curly braces
我想找到一个模式 {text}
并替换包含花括号的文本。
$data = 'you will have a {text and text} in such a format to do {code and code}';
$data= preg_replace_callback('/(?<={{)[^}]*(?=}})/', array($this, 'special_functions'),$data);
和我的 special function
包含回调代码来替换大括号和完全有条件的文本。
public function special_functions($occurances){
$replace_html = '';
if($occurances){
switch ($occurances[0]) {
case 'text and text':
$replace_html = 'NOTEPAD';
break;
case 'code and code':
$replace_html = 'PHP';
break;
default:
$replace_html ='';
break;
}
}
return $replace_html;
}
预期输出
you will have a NOTEPAD in such a format to do PHP
如何使用正则表达式
在 php 中使用 preg_replace_callback
同时替换文本和花括号
您需要像这样编辑模式:
$data = preg_replace_callback('/{{([^{}]*)}}/', array($this, 'special_functions'), $data);
{{([^{}]*)}}
模式将匹配:
{{
- {{
子字符串
([^{}]*)
- 第 1 组:除 {
和 }
之外的任何 0+ 个字符
}}
- }}
文本
然后,在 special_functions
函数内,将 switch ($occurances[0])
替换为 switch ($occurances[1])
。 $occurrances[1]
是使用 ([^{}]*)
模式捕获的文本部分。由于整个匹配是 {{...}}
而捕获的是 ...
,因此 ...
用于检查 switch 块中的可能情况,并且大括号将被删除,因为它们是 consumed(=添加到作为 preg_replace_callback
函数结果替换的匹配值)。
参见PHP demo。
如果你有这么复杂的正则表达式,你可能想看看 T-Regx:
$data = 'you will have a {text and text} in such a format to do {code and code}';
pattern('{{([^{}]*)}}')
->replace($data)
->first()
->callback(function (Match $match) {
switch ($match->group(1)) {
case 'text and text':
return 'NOTEPAD';
case 'code and code':
return 'PHP';
default:
return '';
}
});
我想找到一个模式 {text}
并替换包含花括号的文本。
$data = 'you will have a {text and text} in such a format to do {code and code}';
$data= preg_replace_callback('/(?<={{)[^}]*(?=}})/', array($this, 'special_functions'),$data);
和我的 special function
包含回调代码来替换大括号和完全有条件的文本。
public function special_functions($occurances){
$replace_html = '';
if($occurances){
switch ($occurances[0]) {
case 'text and text':
$replace_html = 'NOTEPAD';
break;
case 'code and code':
$replace_html = 'PHP';
break;
default:
$replace_html ='';
break;
}
}
return $replace_html;
}
预期输出
you will have a NOTEPAD in such a format to do PHP
如何使用正则表达式
在 php 中使用preg_replace_callback
同时替换文本和花括号
您需要像这样编辑模式:
$data = preg_replace_callback('/{{([^{}]*)}}/', array($this, 'special_functions'), $data);
{{([^{}]*)}}
模式将匹配:
{{
-{{
子字符串([^{}]*)
- 第 1 组:除{
和}
之外的任何 0+ 个字符
}}
-}}
文本
然后,在 special_functions
函数内,将 switch ($occurances[0])
替换为 switch ($occurances[1])
。 $occurrances[1]
是使用 ([^{}]*)
模式捕获的文本部分。由于整个匹配是 {{...}}
而捕获的是 ...
,因此 ...
用于检查 switch 块中的可能情况,并且大括号将被删除,因为它们是 consumed(=添加到作为 preg_replace_callback
函数结果替换的匹配值)。
参见PHP demo。
如果你有这么复杂的正则表达式,你可能想看看 T-Regx:
$data = 'you will have a {text and text} in such a format to do {code and code}';
pattern('{{([^{}]*)}}')
->replace($data)
->first()
->callback(function (Match $match) {
switch ($match->group(1)) {
case 'text and text':
return 'NOTEPAD';
case 'code and code':
return 'PHP';
default:
return '';
}
});