PHP从字符串中提取数字并将它们放入2个变量中

时间:2013-10-06 03:12:20

标签: php regex

我在PHP中有一个$custom_size变量,我需要从中提取WidthHeight个数字。

字符串的格式可以包含不同的值,因此它不能始终采用正确的格式。意思有时它可能包含不属于的字符。

但总是相同的一件事是Width值始终是 x LEFT 上的数字和{{ 1}}值将始终是 x

右侧侧的数字

下面的一些示例字符串可能采用以下格式......

Height

$custom_size = '48"x40"'

$custom_size = '48x40'

$custom_size = '48"Wx40"H'

$custom_size = '48Wx40H'

我需要帮助提取左侧的数字,并将其分配给$custom_size = '48 x 40'变量,并将右侧的数字分配给$width变量。

除了示例字符串之外,我想可能会有更多类似字符串的可能性,但总是相似。

对于如何做到这一点,我将不胜感激,我对$height并不是很了解,我认为由于所有可能的组合可能需要这样做?

基本上需要找出将所有数字分配到Regular ExpressionsxX左下的最佳方式,并将所有数字分配给它的右边$width variable 1}}

4 个答案:

答案 0 :(得分:1)

我希望这就足够了。 适用于所有上述尺寸。

$custom_size = '48"Wx40"H';
$varx=explode('x',$custom_size);
$width=intval($varx[0]);//48
$height=intval($varx[1]);//40

修改

$varx=explode('x',strtolower($custom_size));

答案 1 :(得分:1)

所以,我在评论中提到了这一点:

function get_number($str) {
    preg_match_all('!\d+!', $str, $matches);
    return $matches;
}

如果如你所说,你需要提取所有数字并放在一起,请使用:

$left = join("", get_number(strtok($custom_size, "x")));
$right = join("", get_number(strtok("\n")));

它会像那样工作:"4"8 "x"5 "2" => $left=48, $right=52

答案 2 :(得分:0)

您可以使用explode()

$size = explode("x" , $custom_size);
$width = $size[0];
$height = $size[1];

答案 3 :(得分:0)

扔掉你不想要的东西:

$custom_size=preg_replace("/[^0-9x]/","",$custom_size);