将字符串分成若干部分,返回所有字符



我想根据以下规则中断字符串:

  1. 所有连续的字母数字字符加上点(.)必须作为一个部分处理
  2. 所有其他连续字符必须作为一个部分处理
  3. 12的连续组合必须被视为不同的部分
  4. 不得返回空白

例如这个字符串:

Method(hierarchy.of.properties) = ?

应返回此数组:

Array
(
    [0] => Method
    [1] => (
    [2] => hierarchy.of.properties
    [3] => )
    [4] => =
    [5] => ?
)

我使用preg_split()不成功,因为AFAIK不能将模式视为要返回的元素。

有没有一个简单的方法可以做到这一点?

您可能应该使用preg_match_all而不是preg_split。

preg_match_all('/[w|.]+|[^ws]+/', $string, $matches);
print_r($matches);

输出:

Array
(
    [0] => Array
        (
            [0] => Method
            [1] => (
            [2] => hierarchy.of.properties
            [3] => )
            [4] => =
            [5] => ?
        )
)

这应该可以实现您想要的:

$matches = array();
$string = "Method(hierarchy.of.properties) = ?";
foreach(preg_split('/(12|[^a-zA-Z0-9.])/', $string, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $match) {
    if (trim($match) != '')
        $matches[] = $match;
}

我使用了一个循环来删除所有的空白匹配,因为据我所知,preg_split()中没有适合您的功能。

相关内容

  • 没有找到相关文章

最新更新