Question

Bonjour, je veux extraire les liens <a href="/portal/clients/show/entityId/2121" > et je veux une expression régulière qui me GIVS / portail / clients / show / entityID / 2121 le nombre est enfin 2121 dans d'autres liens différents une idée?

Était-ce utile?

La solution

Regex pour les liens d'analyse syntaxique est quelque chose comme ceci:

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

Étant donné comment horrible est, je vous conseille d'utiliser simple HTML Dom pour obtenir les liens au moins. Vous pouvez ensuite vérifier les liens en utilisant une expression rationnelle très basique sur le lien href.

Autres conseils

Ne pas utiliser des expressions régulières pour xml Traitement De / html . Cela peut se faire très facilement en utilisant builtin analyseur dom :

$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";
}

"analyse syntaxique" html Je compte surtout sur PHPQuery: http://code.google.com / p / phpquery / plutôt que regex.

Ceci est ma solution:

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

Je recommande d'éviter d'utiliser des parseurs basés sur XML, parce que vous ne saurez pas toujours, si le document / site a été bien formé.

Cordialement

liens HTML de larder et peut être fait en utilisant l'analyseur am HTML.

Lorsque vous avez tous les liens, simple obtenir l'indice de la dernière barre oblique, et vous avez votre numéro. Pas regex nécessaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top