我想从这个给定的字符串中提取维度。
$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);
任何人都可以帮我解决这个问题吗?提前谢谢。
答案 0 :(得分:0)
只需从您的模式中删除\b
(如果您想要尾随引用,最后添加\'
):
$regexForMinimumPattern ='/((?:\w+\W*){0,1})\'X((?:\W*\w+){0,1})\'/i';
注意:\b
是meta-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。