Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从字符串中提取数字并将其放入两个变量中_Php_Regex - Fatal编程技术网

PHP从字符串中提取数字并将其放入两个变量中

PHP从字符串中提取数字并将其放入两个变量中,php,regex,Php,Regex,我有一个PHP中的$custom_size变量,我需要从中提取宽度和高度数字 字符串的格式可以包含不同的值,因此它的格式并不总是正确的。这意味着有时它可能有不属于的字符 但有一件事始终是相同的,Width值始终是x左侧的数字,Height值始终是x右侧的数字 某些示例字符串可能采用以下格式 $custom\u size='48“x40' $custom\u size='48x40' $custom\u size='48英寸宽x40英寸高' $custom\u size='48Wx40H' $cu

我有一个PHP中的
$custom_size
变量,我需要从中提取
宽度
高度
数字

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

但有一件事始终是相同的,
Width
值始终是x左侧的数字,
Height
值始终是x右侧的数字

某些示例字符串可能采用以下格式

$custom\u size='48“x40'

$custom\u size='48x40'

$custom\u size='48英寸宽x40英寸高'

$custom\u size='48Wx40H'

$custom\u size='48 x 40'

我需要帮助提取左侧的数字并将其分配给
$width
变量,将右侧的数字分配给
$height
变量

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

如果您能为我提供帮助,我将不胜感激。我对
正则表达式不太在行,我想这可能是因为所有可能的组合

基本上需要找出将
x
左侧的所有数字或
x
分配给
$width变量
并将其右侧的所有数字分配给
$height变量

的最佳方法,我希望这就足够了。 适用于上述所有尺寸

编辑

$varx=explode('x',strtolower($custom_size));
您可以使用
explode()


因此,我在评论中这样提到:

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=preg_replace("/[^0-9x]/","",$custom_size);

如果数字是整数,.你想要48W还是仅仅48等?我认为这可能是最灵活和最简单的方法,因为它允许字符串采用多种格式,并且仍然会返回正确的值1小问题使其完美…如果它允许
x
为大写或小写。。。。所以
x
或者
x
?哦,我有个主意,我会把所有东西都大写或小写,然后处理它
$left = join("", get_number(strtok($custom_size, "x")));
$right = join("", get_number(strtok("\n")));
$custom_size=preg_replace("/[^0-9x]/","",$custom_size);