我需要找到一个双位或一位数字,它出现在埋在长字符串中的给定单词之前。例如,如下给出孩子的数量:
从:
获得12blah blah .................. 12个孩子............ blah blah
或6来自:
blah blah ...... 6个孩子............. blah blah
以下代码适用于单个数字,但仅为双位数
返回2<?php
$body = ("..blah..blah...6 children....");
$children_single = explode ("children", $body);
$num_children = preg_replace("/[^0-9]/","", substr($children_single[0],-2));
echo $num_children;
?>
如何调整此值以产生单个或两位数的结果?
答案 0 :(得分:0)
由于空间原因,您目前的状况正在失败。当您分解字符串12 children
时,第一部分$children_single[0]
将包含字符串12
(请注意空格)。因此,当您对该字符串使用substr()
时,将包含该空格,并且仅捕获2
(带空格)。
为避免这种情况,您可以使用第二个参数从头开始substr()
计数,如下所示:
$num_children = preg_replace("/[^0-9]/","", substr($children_single[0], 0, 2));
<强>更新强>
根据您的评论,如果单词children
出现在长字符串中,则上述版本无法正常工作。在这种情况下,您可以使用否定开头,如下所示:
$num_children = preg_replace("/[^0-9]/","", substr($children_single[0], -3, -1));