从字符串中检索数字字符,其中非整数表示为分数


Retrieving numeric characters from a string where non-integers are represented as fractions

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

我有一个像这样的字符串-

[ [ -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 ] ]

我正在逐行地研究这个矩阵,我想把每一行的数字提取到一个数组中。

这个问题与我之前问的一个问题非常相似——从字符串中检索数字字符

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

尝试处理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',
  ),
);