使用正则表达式匹配每个角色作为自己的组?

时间:2009-02-11 13:10:28

标签: php regex pcre

在PHP中,我试图将每个角色作为自己的组匹配。哪个会模仿str_split()。我试过了:

$string = '123abc456def';
preg_match_all('/(.)*/', $string, $array);
// $array = array(2) { 
//   [0]=>  array(2) { 
//      [0]=>  string(12) "123abc456def"
//      [1]=>  string(0) "" } 
//   [1]=>  array(2) { [0]=>  string(1) "f" [1]=>  string(0) "" } } 

我期待的是:

//$array = array(2) { 
//   [0]=> string(12) "123abc456def", 
//   [1]=> array(12) { 
//       [0]=>  string(1) "1", [1]=> string(1) "2"
//       ... 
//       [10]=> string(1) "e", [11]=> string(1) "f" } }

我想使用正则表达式而不是str_split()的原因是因为正则表达式将成为另一个正则表达式的基础。

4 个答案:

答案 0 :(得分:4)

parens外面的*表示你想重复捕获组。 (这意味着您将只捕获最后一次迭代。)尝试任何单个字符的全局匹配,如下所示:

preg_match_all('/(.)/', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];

答案 1 :(得分:2)

试试这个:

preg_match_all('/./s', $str, $matches)

这也符合换行符。

答案 2 :(得分:0)

也许这就是你要找的东西:

  

preg_match_all('/(。)+?/',$ string,   $阵列);

答案 3 :(得分:0)

我不知道这对这个电台是否有帮助,但你可以访问字符串的字母,如数组..所以

<?php
$a = "hede";
print $a[0] . "\n";
print $a[1] . "\n";
print $a[2] . "\n";
print $a[3] . "\n";
?>

将输出

ħ

ë

d

ë