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

时间:2011-06-27 12:05:25

标签: php split php-5.3 preg-split

我想根据以下规则打破字符串:

  1. 所有连续的字母数字字符,加上点(.)必须视为一部分
  2. 所有其他连续字符必须视为一部分
  3. 必须将12的连续组合视为不同的部分
  4. 不得返回任何空格
  5. 例如这个字符串:

    Method(hierarchy.of.properties) = ?
    

    应该返回这个数组:

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

    我使用preg_split()失败,因为AFAIK无法将模式视为要返回的元素。

    是否有简单方法的想法?

2 个答案:

答案 0 :(得分:3)

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

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

输出:

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

)

答案 1 :(得分:0)

这应该做你想要的:

$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()中没有适合您的功能。