我想根据以下规则打破字符串:
.
)必须视为一部分1
和2
的连续组合视为不同的部分例如这个字符串:
Method(hierarchy.of.properties) = ?
应该返回这个数组:
Array
(
[0] => Method
[1] => (
[2] => hierarchy.of.properties
[3] => )
[4] => =
[5] => ?
)
我使用preg_split()
失败,因为AFAIK无法将模式视为要返回的元素。
是否有简单方法的想法?
答案 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()中没有适合您的功能。