需要什么正则表达式(对于PHP preg_match)?

时间:2011-06-29 15:55:25

标签: php regex

MySQL表中的一组值包含不同格式的维度,例如:

  • 2140×910
  • Ø500
  • Ø600×1200
  • 2000×1000或Ø1500

这些数字都是以毫米为单位的维度,我想要一个能够提取所有数字(例如,数组)的正则表达式,这样我就可以将它们转换为英寸并将它们以相同的方式反射出来。格式。

使用regextester.com我测试了模式(\d+)并且它工作正常,突出显示字符串中的任何数字组。

但是,当我尝试在我的PHP代码(下面)中使用它时,匹配数组看起来与我期望的不同。

$pattern = '/(\d+)/';
$string = '2140 × 910';
preg_match ($pattern, $string, $matches);

echo "<pre>";
print_r ($matches);
echo "</pre>";

此代码输出:

Array
(
    [0] => 2140
    [1] => 2140
)

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

preg_match仅返回第一场比赛。如果您想获得所有匹配项,请使用preg_match_all

$pattern = '/(\d+)/';
$string = '2140 &times; 910';
preg_match_all($pattern, $string, $matches);

var_dump($matches);

输出:

array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(4) "2140"
    [1]=>
    string(3) "910"
  }
  [1]=>
  array(2) {
    [0]=>
    string(4) "2140"
    [1]=>
    string(3) "910"
  }
}

答案 1 :(得分:1)

尝试使用preg_match_all()