PHP在给定单词之前找到两位数字

时间:2013-09-01 14:40:30

标签: php preg-replace

我需要找到一个双位或一位数字,它出现在埋在长字符串中的给定单词之前。例如,如下给出孩子的数量:

从:

获得12
  blah 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;

?>

如何调整此值以产生单个或两位数的结果?

1 个答案:

答案 0 :(得分:0)

由于空间原因,您目前的状况正在失败。当您分解字符串12 children时,第一部分$children_single[0]将包含字符串12(请注意空格)。因此,当您对该字符串使用substr()时,将包含该空格,并且仅捕获2(带空格)。

为避免这种情况,您可以使用第二个参数从头开始substr()计数,如下所示:

$num_children  = preg_replace("/[^0-9]/","", substr($children_single[0], 0, 2));

Demo!

<强>更新

根据您的评论,如果单词children出现在长字符串中,则上述版本无法正常工作。在这种情况下,您可以使用否定开头,如下所示:

$num_children  = preg_replace("/[^0-9]/","", substr($children_single[0], -3, -1));

Demo!