Frage

Hallo ich möchte Links extrahieren <a href="/portal/clients/show/entityId/2121" > und ich möchte eine Regex, die GIVS mich / portal / clients / Show / EntityID / 2121 die Zahl zuletzt 2121 in anderen Verbindungen unterschiedlich irgendeine Idee?

War es hilfreich?

Lösung

Regex für Links Parsen ist so etwas wie folgt aus:

'/<a\s+(?:[^"'>]+|"[^"]*"|'[^']*')*href=("[^"]+"|'[^']+'|[^<>\s]+)/i'

Bedenkt man, wie schrecklich das ist, würde ich empfehlen die Verwendung von Einfache HTML Dom für die Links zumindest bekommen. Sie könnten dann Links überprüfen einige sehr grundlegende Regex auf den Link href verwendet wird.

Andere Tipps

Einfaches PHP HTML Domparser Beispiel:

// Create DOM from string
$html = str_get_html($links);

//or
$html = file_get_html('www.example.com');

foreach($html->find('a') as $link) {
    echo $link->href . '<br />';
}

nicht xml reguläre Ausdrücke für verarbeitend Verwenden Sie / html . Dies kann sehr einfach durchgeführt werden unter Verwendung der builtin Domparser :

$doc = new DOMDocument();
$doc->loadHTML($htmlAsString);
$xpath = new DOMXPath($doc);
$nodeList = $xpath->query('//a/@href');
for ($i = 0; $i < $nodeList->length; $i++) {
    # Xpath query for attributes gives a NodeList containing DOMAttr objects.
    # http://php.net/manual/en/class.domattr.php
    echo $nodeList->item($i)->value . "<br/>\n";
}

Wenn "Parsen" html ich vertrauen meist auf PHPQuery: http://code.google.com / p / phpquery / eher dann regex.

Das ist meine Lösung:

<?php
// get links
$website = file_get_contents("http://www.example.com"); // download contents of www.example.com
preg_match_all("<a href=\x22(.+?)\x22>", $website, $matches); // save all links \x22 = "

// delete redundant parts
$matches = str_replace("a href=", "", $matches); // remove a href=
$matches = str_replace("\"", "", $matches); // remove "

// output all matches
print_r($matches[1]);
?>

Ich empfehle xml-basierten Parser zu vermeiden, verwenden, weil man nicht immer wissen, ob das Dokument / Webseite gut ausgebildet wurde.

Mit freundlichen Grüßen

Schnipsel-Links von HTML können mit am HTML-Parser durchgeführt werden.

Wenn Sie alle Links, einfach den Index des letzten Schrägstrich, und Sie haben Ihre Nummer. Keine Regex erforderlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top