2 Stimmen

Preg_match Hilfe zum Finden der Anzahl

Hallo zusammen ich habe eine Zeichenkette

<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>

Ich muss 10000 als Antwort erhalten. Wie verwende ich preg_match? Hinweis: Es ist wichtig, dass das mehrfache Auftreten von match

Vielen Dank im Voraus

3voto

Lauri Lehtinen Punkte 10272

Zumindest für diesen speziellen Fall könnten Sie Folgendes verwenden '/\(\d+\-\d+ of (\d+)\)/' als die pattern .

Sie passt auf Zeichenfolgen wie diese ({one-or-more-digits}-{one-or-more-digits} of {one-or-more-digits}) und fängt die letzte {one-or-more-digits} in eine Gruppe ( {} s nur der Klarheit halber hinzugefügt ).

$str = '<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>';
$matches = array();
if (preg_match('/\(\d+\-\d+ of (\d+)\)/', $str, $matches))
{
    print_r($matches);
}

Drucke:

Array
(
    [0] => (1-20 of 10000)
    [1] => 10000
)

Die 10000, nach denen Sie suchen, wären also zugänglich unter $matches[1] .


Edit nach deinem Kommentar: Wenn Sie mehrere Vorkommen von ({one-or-more-digits}-{one-or-more-digits} of {one-or-more-digits}) können Sie verwenden preg_match_all um sie alle zu fangen. Ich bin mir nicht sicher, wie nützlich die Zahlen selbst sind, ohne den Kontext, in dem sie vorkommen, aber hier ist, wie Sie es tun könnten:

$str = '<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>';
$str .= "\n$str\n";
echo $str;
$matches = array();
preg_match_all('/\(\d+\-\d+ of (\d+)\)/', $str, $matches);
print_r($matches);

Drucke:

<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>
<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>
Array
(
    [0] => Array
        (
            [0] => (1-20 of 10000)
            [1] => (1-20 of 10000)
        )

    [1] => Array
        (
            [0] => 10000
            [1] => 10000
        )

)

Auch hier gilt: Was Sie suchen, ist in $matches[1] nur dass es sich diesmal um ein Array handelt, das 1 oder mehrere der tatsächlichen Werte enthält.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X