给出该字符串
$opStr = "1 + 2 - 3 * 4 / 5";
preg_match('/[\+\-\*\/]/', $strOp, $matches);
$ matches is
array (size=1)
0 => string '+' (length=1)
基本上它匹配第一个操作数,有没有办法知道字符串是否包含更多的操作数,就像在这个例子中一样?
感谢
预期产出
case "1 + 1": $matches[0] = '+'
case "2 - 1": $matches[0] = '-'
case "1 + 2 - 3 * 4 / 5": $matches[0] = '+-+/'
or
case "1 + 2 - 3 * 4 / 5": $matches[0] = array('+', '-', '+', '/')
答案 0 :(得分:1)
您需要按顺序使用preg_match_all
函数进行全局匹配。
preg_match_all('~[-+*/]~', $strOp, $matches);
$re = "~[-+*/]~m";
$str = "1 + 2 - 3 * 4 / 5";
preg_match_all($re, $str, $matches);
print_r($matches);
<强>输出:强>
Array
(
[0] => Array
(
[0] => +
[1] => -
[2] => *
[3] => /
)
)
答案 1 :(得分:0)
只需使用 preg_match_all 而不是preg_match。
<?php
$opStr = "1 + 2 - 3 * 4 / 5";
preg_match_all('/[\+\-\*\/]/', $opStr, $matches);
echo '<pre>';print_r($matches);echo '</pre>';
## will produce:
/*
Array
(
[0] => Array
(
[0] => +
[1] => -
[2] => *
[3] => /
)
)
*/