如何找到格式的分辨率大小" 240x320"从字符串?

时间:2012-06-12 01:49:12

标签: php regex

我有一个示例代码:

$text = "240 x 400 pixels, 3.0 inches (~155 ppi pixel density)";

使用正则表达式:

preg_match_all('/(.*)( x )(.*)/i', $text, $arr);

print_r($arr[0]);

结果没有变化,如何解决?

4 个答案:

答案 0 :(得分:1)

您可能需要这样做:/(\d+)\s*x\s*(\d+)/i

它会匹配一个数字\d+,然后是任意数量的空格\s+,然后是x,然后是任意数量的空格,然后是另一个数字\d+。它还捕获匹配数组的索引1和索引2中的数字。

答案 1 :(得分:1)

/(\d+)(?:\sx\s)(\d+)/i

小心使用.

答案 2 :(得分:1)

此方法将为您提供访问这些值的宽度/高度的键。使用\ d,您只会定位数字

$text = "240 x 400 pixels, 3.0 inches (~155 ppi pixel density)";
preg_match_all('/(?P<width>\d+) x (?P<height>\d+)/i', $text, $arr);
print_r($arr);exit;

答案 3 :(得分:1)

我猜你想把你的正则表达式改成这样的东西:

preg_match_all('/(\d+) x (\d+)/i', $text, $arr);

“。”匹配任何字符,所以当你使用.*它只匹配整个字符串---你放在它后面的东西并不重要。使用正则表达式,尽可能具体,通常是一个很好的经验法则。在这种情况下,\d+将匹配1个或多个数字,因此当它到达第一个非数字数字时会停止匹配,在这种情况下,是一个空格。

以下是我使用$arr字符串和更新的正则表达式获得的$text的结果:

Array
(
    [0] => Array
        (
            [0] => 240 x 400
        )

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

    [2] => Array
        (
            [0] => 400
        )

)

希望它更接近你所寻找的东西。