-1

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

从以下推导 12:

等等………………12 个孩子……………………………………………………………………………………………………………………………………………………………………………

或 6 个:

废话……6个孩子……废话

以下代码适用于单个数字,但仅返回 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;

?>

我如何调整它以给出一位数或两位数的结果?

4

1 回答 1

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));

演示!

于 2013-09-01T14:42:57.533 回答