PHP preg_分割花括号
谁能帮我? 我有这样一个字符串:PHP preg_分割花括号,php,regex,split,preg-split,Php,Regex,Split,Preg Split,谁能帮我? 我有这样一个字符串: $string = '<p>{titleInformation}<p>'; $string='{titleInformation}'; 我想拆分此字符串,以便获得以下数组: array ( 0 => '<p>', 1 => '{titleInformation}', 2 => '<p>', ) 数组( 0=>“”, 1=>“{titleInformation}”, 2=>“”
$string = '<p>{titleInformation}<p>';
$string='{titleInformation}';
我想拆分此字符串,以便获得以下数组:
array (
0 => '<p>',
1 => '{titleInformation}',
2 => '<p>',
)
数组(
0=>“”,
1=>“{titleInformation}”,
2=>“”,
)
我不熟悉正则表达式,我尝试了使用preg_match_all()函数的多种模式,但我找不到正确的模式。我也看了这个问题,但是我的字符串中没有空格
提前感谢。将preg\u match()
与捕获组一起使用。您需要避开大括号,因为它们在正则表达式中有特殊意义
preg_match('/(.*?)(\\{[^}]*\\})(.*)/', $string, $match);
var_dump($match);
结果:
array(4) {
[0]=>
string(24) "<p>{titleInformation}<p>"
[1]=>
string(3) "<p>"
[2]=>
string(18) "{titleInformation}"
[3]=>
string(3) "<p>"
}
数组(4){
[0]=>
字符串(24)“{titleInformation}”
[1]=>
字符串(3)“”
[2]=>
字符串(18)“{titleInformation}”
[3]=>
字符串(3)“”
}
$match[0]
包含整个regexp的匹配项,元素1-3包含所需的部分。在我看来,为任务调用的最佳函数是:preg\u split()
。它有一个名为PREG_SPLIT_DELIM_CAPTURE
的标志,允许您在输出数组中保留所选的分隔符。这是一种非常简单的技巧,使用否定字符类([^}]*
)是提高代码速度的好方法。使用preg_split()
与preg_match()
的其他好处包括:
- 由于捕获组较少,提高了效率
- 较短的图案,更容易阅读
- 输出数组中没有无用的“fullstring”匹配
代码:()()
$string='{titleInformation}';
瓦鲁出口(
preg_split('/({[^}]*})/',$string,NULL,preg_split_DELIM_CAPTURE)
);
输出:
array (
0 => '<p>',
1 => '{titleInformation}',
2 => '<p>',
)
数组(
0=>“”,
1=>“{titleInformation}”,
2=>“”,
)
如果此答案不适用于您的所有用例,请编辑您的问题以包含示例输入字符串并ping我--我将更新我的答案。使用preg\u split
可以这样做
preg_split('/[{}]+/', $myString);
它需要用正则表达式来处理吗?例如,DOMDocument
,这是一项很简单的任务。为什么而不是
作为结束标记?
preg_split('/[{}]+/', $myString);