Php ile belirli bir bağlantının hedef kapma

4 Cevap php

Im php ile (statik) bir bağlantı (dinamik) hedef kapmak için çalışıyor

Im emin ne bu yapmak için en iyi yol değildir.

bağlantıdır

<a href=page.php?XXYYYYYYY>LinkName</a>

X mektupları ve Y adlı (hem uzunluğu değişebilir) numaraları vardır. 'Köprü_adı' her zaman olsa da aynı kalır.

Burada en iyi seçenek regex mı? Ya da daha iyi bir yolu var mı?

4 Cevap

Regex en iyi yol değildir. Böyle DomDocument gibi bir HTML çözümleyici kullanın.

HTML geçerli olsaydı, SimpleXML ile bunu kolayca yapabilir

$html = <<< HTML
<ul>
    <li><a href="page.php?XX">Link1</a></li>
    <li><a href="page.php?YY">Link2</a></li>
    <li><a href="page.php?ZZ">Link3</a></li>
</ul>
HTML;

ve daha sonra

$doc = simplexml_load_string($html);
$links = $doc->xpath('//a/@href');
foreach ($links as $link) {
    $url = parse_url($link);
    var_dump($url['query']);
}

çıkış

string(2) "XX"
string(2) "YY"
string(2) "ZZ"

Geçerli HTML bir seçenek değilse, (Pekka önerilen) gibi XML Reader, DOM veya SimpleHTML deneyin

Bu model href peşinde sadece ne olsun, ve linkname kadar olacak

href=([\w.?]+)