1

可能重复:
从字符串中检索数字字符

我有一个这样的字符串 -

[ [ -2, 1/2 ], // 1/2 represents one half

我想检索数字字符并将它们放入一个最终看起来像这样的数组中:

array(
  [0] => -2,
  [1] => 1/2
)

这样做的最佳方法是什么?

一个更彻底的例子 -

[ [ -2, 1/2, 4, 8 ],
  [ 5,  1/2, 1, -4/3 ],
  [ -2, 7/2, 4, 4 ],
  [ -2, 1/2, -3, 2 ] ]

我正在逐行浏览这个矩阵,我想将每行的数字提取到一个数组中。

这个问题与我之前提出的问题非常相似 - Retrieving numeric characters from a string

不同之处在于数字中没有小数点。相反,非整数表示为分数。

4

1 回答 1

3

尝试处理 preg 语法。您的 preg 表达式很简单:/(-?\d+(?:\/\d+)?)/.

preg_match_all( '/(-?\d+(?:\/\d+)?)/', $string, $matches);

// given :
$str = '[ [ -2, 1/2, 4, 8 ],
  [ 5,  1/2, 1, -4/3 ],
  [ -2, 7/2, 4, 4 ],
  [ -2, 1/2, -3, 2 ] ]';

// outut :
$matches = array (
  0 => 
  array (
    0 => '-2',
    1 => '1/2',
    2 => '4',
    3 => '8',
    4 => '5',
    5 => '1/2',
    6 => '1',
    7 => '-4/3',
    8 => '-2',
    9 => '7/2',
    10 => '4',
    11 => '4',
    12 => '-2',
    13 => '1/2',
    14 => '-3',
    15 => '2',
  ),
  1 => 
  array (
    0 => '-2',
    1 => '1/2',
    2 => '4',
    3 => '8',
    4 => '5',
    5 => '1/2',
    6 => '1',
    7 => '-4/3',
    8 => '-2',
    9 => '7/2',
    10 => '4',
    11 => '4',
    12 => '-2',
    13 => '1/2',
    14 => '-3',
    15 => '2',
  ),
);
于 2012-09-10T12:33:30.723 回答