1

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

字符串的格式可以包含不同的值,因此它并不总是正确的格式。这意味着有时它可能包含不属于的字符。

始终相同的一件事是Width值将始终是x左侧的数字,而值将始终是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 Expressions我认为由于所有可能的组合可能需要这样做?

基本上需要找出将所有数字分配给左侧x或分配X给 a$width variable并将所有数字分配给右侧的最佳方法$height variable

4

4 回答 4

2

所以,我在评论中这样提到:

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

于 2013-10-06T03:21:54.037 回答
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));
于 2013-10-06T03:17:14.577 回答
0

just throw away what you don't want:

$custom_size=preg_replace("/[^0-9x]/","",$custom_size);
于 2013-10-06T03:34:19.790 回答
0

您可以使用explode()

$size = explode("x" , $custom_size);
$width = $size[0];
$height = $size[1];
于 2013-10-06T03:18:12.297 回答