Pergunta

Olá eu quero extrair ligações <a href="/portal/clients/show/entityId/2121" > e eu quero um regex que GIVS me / portal / clientes / show / entityId / 2121 o número na última 2121 é em outros links diferentes alguma idéia?

Foi útil?

Solução

Regex para analisar links é algo como isto:

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

Dado como horrível que seja, eu recomendo usar HTML Dom para obter as ligações, pelo menos. Você poderia, então, verificar os links usando algum regex muito básico no link href.

Outras dicas

Simples PHP HTML Dom Analisador exemplo:

// 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 />';
}

Não use expressões regulares para proccessing xml / html . Isso pode ser feito muito facilmente usando o builtin dom analisador :

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

Quando "análise" html I dependem principalmente da PHPQuery: http://code.google.com / p / phpquery / em vez de regex.

Esta é a minha solução:

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

Eu recomendo evitar o uso de analisadores baseados em XML, porque você não vai sempre saber, se o documento / site foi bem formado.

Com os melhores cumprimentos

ligações Paring de HTML pode ser feito usando analisador am HTML.

Quando você tem todas as ligações, simples obter o índice da última barra, e você tem o seu número. Sem regex necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top