我在PHP中有一个$custom_size
变量,我需要从中提取一个Width
和Height
数字。
字符串的格式可以包含不同的值,因此它并不总是采用正确的格式。 这意味着有时它可能具有不属于的字符。
但始终相同的一件事是,Width
值将始终是 x 左侧的数字,Height
值将始终是 x 右侧的数字
一些示例字符串可能采用以下格式...
$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
左侧$width variable
并将其右侧的所有数字分配给$height variable
的最佳方法
因此,我在评论中以这种方式提到:
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
我希望这就足够了。适用于上述所有尺寸。
$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));
您可以使用
explode()
$size = explode("x" , $custom_size);
$width = $size[0];
$height = $size[1];
扔掉你不想要的东西:
$custom_size=preg_replace("/[^0-9x]/","",$custom_size);