如何从 PHP 中的 preg_split() 函数中提取正则表达式值
How to extract regex value from preg_split() function in PHP
如果我使用 preg_split()
函数,例如:
$string = 'products{id,name},articles{title,text}';
$arr = preg_split('/\}\,(\w)/', $string);
print_r($arr);
我收到以下结果:
Array ( [0] => products{id,name [1] => rticles{title,text} )
如何接收完整的单词 文章 即提取正则表达式模式的值?
ps。如果可能的话
您可以拆分匹配花括号,清除匹配缓冲区。然后匹配逗号并使用正向先行断言右侧的单词字符而不是匹配它。
{[^{}]*}\K,(?=\w)
模式匹配:
{
匹配 {
[^{}]*
匹配除 {
和 }
之外的任何字符 0+ 次
}
匹配 }
\K,
忘记什么是匹配到现在,匹配一个逗号
(?=\w)
正向前瞻,断言直接右边的是单词字符
$string = 'products{id,name},articles{title,text}';
$arr = preg_split('/{[^{}]*}\K,(?=\w)/', $string);
print_r($arr);
输出
Array
(
[0] => products{id,name}
[1] => articles{title,text}
)
如果我使用 preg_split()
函数,例如:
$string = 'products{id,name},articles{title,text}';
$arr = preg_split('/\}\,(\w)/', $string);
print_r($arr);
我收到以下结果:
Array ( [0] => products{id,name [1] => rticles{title,text} )
如何接收完整的单词 文章 即提取正则表达式模式的值?
ps。如果可能的话
您可以拆分匹配花括号,清除匹配缓冲区。然后匹配逗号并使用正向先行断言右侧的单词字符而不是匹配它。
{[^{}]*}\K,(?=\w)
模式匹配:
{
匹配{
[^{}]*
匹配除{
和}
之外的任何字符 0+ 次
}
匹配}
\K,
忘记什么是匹配到现在,匹配一个逗号(?=\w)
正向前瞻,断言直接右边的是单词字符
$string = 'products{id,name},articles{title,text}';
$arr = preg_split('/{[^{}]*}\K,(?=\w)/', $string);
print_r($arr);
输出
Array
(
[0] => products{id,name}
[1] => articles{title,text}
)