使用PHP从字符串中提取维度

时间:2016-08-18 15:11:28

标签: php string extract

我想从这个给定的字符串中提取维度。

$str = "enough for hitting practice. The dimension is 20'X10' *where";

结果我希望 20'X10'

我尝试使用以下代码获取字符串'X 之前和之后的数字。但它返回一个空数组。

$regexForMinimumPattern ='/((?:\w+\W*){0,1})\'X\b((?:\W*\w+){0,1})/i';
preg_match_all ($regexForMinimumPattern, $str, $minimumPatternMatches);
print_r($minimumPatternMatches);

任何人都可以帮我解决这个问题吗?提前谢谢。

3 个答案:

答案 0 :(得分:0)

只需从您的模式中删除\b(如果您想要尾随引用,最后添加\'):

$regexForMinimumPattern ='/((?:\w+\W*){0,1})\'X((?:\W*\w+){0,1})\'/i';

注意:\bmeta-character for word-boundaries,您在这里不需要它。

答案 1 :(得分:0)

假设我们想要的字符串格式是00'X00:

$regexForMinimumPattern ='/[0-9]{1,2}\'X[0-9]{1,2}/i';

这会给你一个像

这样的结果
  

数组([0] =>数组([0] => 20'X10))

答案 2 :(得分:0)

那么:一个简单的preg_replace()能做到吗?也许...

<?php
    $str    = "enough for hitting practice. The dimension is 20'X10' *where";
    $dim    = preg_replace("#(.*?)(\d*?)(\.\d*)?(')(X)(\d*?)(\.\d*)?(')(.+)#i","$2$3$4$5$6$7", $str);
    var_dump($dim);     //<== YIELDS::: string '20'X10' (length=6) 

您可以尝试Here