PHP   发布时间:2022-04-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果未使用PHP找到带有默认值的RegEx分组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

这是一个示例字符串:

$text = 'foo (20/50) bar () baz (11/30)';

我需要的输出是这样的

$items = array(
   array(
      "title" => "foo",
      "number" => 20
   ),
   array(
      "title" => "bar",
      "number" => 0
   )
   array(
      "title" => "baz",
      "number" => 11
   )
);

尝试

到目前为止,我一直在使用

$matches_title = array();
$matches_number = array();
preg_match_all('!([^\s]+)!',$text,$matches_titlE);
preg_match_all('!(?<=\()(\d+)(?=\/)!',$text,$matches_number);

然后遍历匹配项以捕获值.显然,当括号之一为空时,这将不起作用,因为两个数组的长度都不同.

我该如何解决这个问题?

解决方法:

您可以使用以下PHP代码

$text = 'foo (20/50) bar () baz (11/30)';
preg_match_all('~([\w-]+)\h*\((\d*)(?=[/)])~', $text, $m);

$items = array();
foreach($m[1] as $i => $v) {
   $n = $m[2][$i];
   $items[] = array( "title" => $v, "number" => (empty($n) ? 0: $n) );
}
print_r($items);

输出

Array
(
    [0] => Array
        (
            [title] => foo
            [number] => 20
        )

    [1] => Array
        (
            [title] => bar
            [number] => 0
        )

    [2] => Array
        (
            [title] => baz
            [number] => 11
        )

)

大佬总结

以上是大佬教程为你收集整理的如果未使用PHP找到带有默认值的RegEx分组全部内容,希望文章能够帮你解决如果未使用PHP找到带有默认值的RegEx分组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: