-1

長い文字列に埋もれている特定の単語の前にある 2 桁または 1 桁の数字を見つける必要があります。たとえば、次のように与えられたときに子供の数を見つけます。

以下から 12 を導出します。

何とか…………12人の子供…………何とか何とか

または 6 から:

何とか何とか……6人の子供たち…………何とか何とか

次のコードは 1 桁の場合は機能しますが、2 桁の場合は 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 桁または 2 桁の結果が得られるようにするにはどうすればよいですか?

4

1 に答える 1

0

あなたの現在の状態は、スペースのために失敗しています。文字列 を分解する12 childrenと、最初の部分 に$children_single[0]文字列が含まれます12(スペースに注意してください)。そのため、その文字列で使用substr()すると、スペースが含まれ、キャプチャのみが行われます2(スペース付き)。

これを回避するにはsubstr()、次のように 2 番目のパラメーターを使用して、最初からカウントを開始できます。

$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 に答える