0

在 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" } }

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

4

4 回答 4

4

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

preg_match_all('/(.)/', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];
于 2009-02-11T13:19:11.143 回答
2

试试这个:

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

这也匹配换行符。

于 2009-02-11T16:46:29.180 回答
0

也许这就是你正在寻找的:

preg_match_all('/(.)+?/', $string, $array);

于 2009-02-11T16:41:33.933 回答
0

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

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

将输出

H

e

d

e

于 2013-04-08T00:01:10.443 回答