0

次のような文字列の最大数を見つける必要があります。

<div id='pages'>
 <a href='pages.php?start=0&end=20'>Page 1</a>
 <a href='pages.php?start=20&end=40'>Page 2</a>
 <a href='pages.php?start=40&end=60'>Page 3</a>
 <a href='pages.php?start=60&end=80'>Page 4</a>
 <a href='pages.php?start=80&end=89'>Page 5</a>
</div>

この例では、「終了」値の最大値であるため、89 を取得する必要があります。

正規表現を使用する必要があると思いますが、方法がわかりません:(

どんな助けでも大歓迎です!

4

4 に答える 4

2

位置に関係なく、文字列全体で最大の数を見つけるには、次を使用できます

例 (デモ)

echo max(preg_split('/\D+/', $html, -1, PREG_SPLIT_NO_EMPTY)); // prints 89

これは、数値以外で文字列を分割し、文字列内のすべての数値を含む配列を残してから、その配列から最大の数値を取得することによって機能します。

于 2013-05-23T20:19:43.033 に答える
1

最初にリンクからすべての数値を抽出し、次に max 関数を適用します。

$str = "<div id='pages'>
 <a href='pages.php?start=0&end=20'>Page 1</a>
 <a href='pages.php?start=20&end=40'>Page 2</a>
 <a href='pages.php?start=40&end=60'>Page 3</a>
 <a href='pages.php?start=60&end=80'>Page 4</a>
 <a href='pages.php?start=80&end=89'>Page 5</a>
</div>";

if(preg_match_all("/href=['][^']+end=([0-9]+)[']/i", $str, $matches))
{
    $maxVal = max($matches[1]);
    echo $maxVal;
}
于 2013-05-23T17:13:58.250 に答える
0
function getHighest($html) {
    $my_document = new DOMDocument();
    $my_document->loadHTML($html);
    $nodes = $my_document->getElementsByTagName('a');
    $numbers = array();

    foreach ($nodes as $node) {
        if (preg_match('\d+$', $node->getAttribute('href'), $match) == 1) {
            $numbers[]= intval($match[0])
        }
    }

    return max($numbers);
}
于 2013-05-23T17:11:27.893 に答える