使用 PHP 从字符串中提取大小维度
Extract size dimensions from a string using PHP
谁能帮我从类似于这些字符串的字符串中提取维度
Extending Garden Table 100 x 200 x 300 cm white
Extending Garden Table 200 x 200 cm black
Extending Garden Table 200 cm black Large
我只需要输出 100 x 200 x 300 cm 或 200 x 200 cm 或 200 cm ,根据字符串包含的内容
我从下面的代码开始,以防它能有所帮助
$string1 = "Extending Garden Table 100 x 200 x 300 cm white";
$test = get_dimensions($string1); //need it to output 100 x 200 x 300 cm
function get_dimensions($str) {
preg_match_all('/[0-9]{1,2}\X[0-9]{1,2}/i', $str, $matches);
//preg_match_all('!\d+!', $str, $matches);
return $matches;
}
您可以使用
\d+(?:\s*x\s*\d+)*\s*cm\b
见regex demo。 详情:
\d+
- 一位或多位数字
(?:\s*x\s*\d+)*
- 零个或多个序列:
\s*x\s*
- x
包含零个或多个空格
\d+
- 一位或多位数字
\s*
- 零个或多个空格
cm
- 一个cm
字
\b
- 单词边界
参见 PHP demo:
function get_dimensions($str) {
preg_match_all('/\d+(?:\s*x\s*\d+)*\s*cm\b/i', $str, $matches);
return $matches[0];
}
$string1 = "Extending Garden Table 100 x 200 x 300 cm white";
$test = get_dimensions($string1); //need it to output 100 x 200 x 300 cm
print_r($test);
// => Array ( [0] => 100 x 200 x 300 cm )
要提取带小数部分的数字,请在上述模式中的每个 \d+
后添加 (?:[,.]\d+)?
(可选的逗号或点,然后是一个或多个数字):
\d+(?:[,.]\d+)?(?:\s*x\s*\d+(?:[,.]\d+)?)*\s*cm\b
参见 this regex demo。
谁能帮我从类似于这些字符串的字符串中提取维度
Extending Garden Table 100 x 200 x 300 cm white
Extending Garden Table 200 x 200 cm black
Extending Garden Table 200 cm black Large
我只需要输出 100 x 200 x 300 cm 或 200 x 200 cm 或 200 cm ,根据字符串包含的内容
我从下面的代码开始,以防它能有所帮助
$string1 = "Extending Garden Table 100 x 200 x 300 cm white";
$test = get_dimensions($string1); //need it to output 100 x 200 x 300 cm
function get_dimensions($str) {
preg_match_all('/[0-9]{1,2}\X[0-9]{1,2}/i', $str, $matches);
//preg_match_all('!\d+!', $str, $matches);
return $matches;
}
您可以使用
\d+(?:\s*x\s*\d+)*\s*cm\b
见regex demo。 详情:
\d+
- 一位或多位数字(?:\s*x\s*\d+)*
- 零个或多个序列:\s*x\s*
-x
包含零个或多个空格\d+
- 一位或多位数字
\s*
- 零个或多个空格cm
- 一个cm
字\b
- 单词边界
参见 PHP demo:
function get_dimensions($str) {
preg_match_all('/\d+(?:\s*x\s*\d+)*\s*cm\b/i', $str, $matches);
return $matches[0];
}
$string1 = "Extending Garden Table 100 x 200 x 300 cm white";
$test = get_dimensions($string1); //need it to output 100 x 200 x 300 cm
print_r($test);
// => Array ( [0] => 100 x 200 x 300 cm )
要提取带小数部分的数字,请在上述模式中的每个 \d+
后添加 (?:[,.]\d+)?
(可选的逗号或点,然后是一个或多个数字):
\d+(?:[,.]\d+)?(?:\s*x\s*\d+(?:[,.]\d+)?)*\s*cm\b
参见 this regex demo。