Frage

Ich bin simplephpdom verwenden, um zu bekommen a href verknüpft Werte mit diesem Code:

$html = file_get_html($url);
foreach($html->find('a') as $element) $array[] = $element->href . '<br>'; 

Das Problem besteht nun darin, dass der Link ungültig ist, wenn er mit einem Schrägstrich (/) beginnt!

Wie kann ich gültige Links haben?

Der Link sieht zum Beispiel so aus:

<a href="/news45454.html">Test link</a>

Wenn ich PHPSimpledom-Code verwende, habe ich:

/news45454.html

Aber ich möchte haben:

http://example.com/news45454.html

Wie bekomme ich das?

Können wir testen, ob der Link mit einem Schrägstrich beginnt, und dann die Site-URL hinzufügen?!Wie ?

War es hilfreich?

Lösung

Grundsätzlich müssen Sie testen, ob das HREF-Element eine gültige vollständige URL ist.Wenn die Validierung erfolgreich ist, können Sie fortfahren und es dem Array hinzufügen.Wenn die Validierung jedoch fehlschlägt, müssen Sie den Basisnamen (der die Domäne der Website sein sollte) verketten.

$html = file_get_html($url);
foreach($html->find('a') as $element) {
    if(filter_var($url, FILTER_VALIDATE_URL)) {
        // Valid URL, add to array.
        $array[] = $element->href . '<br>'; 
    } else {
        // URL is invalid, add basename.
        $array[] = basename($url) . $element->href . '<br>';
    }
}

In anderen Fällen muss dies möglicherweise etwas angepasst werden (z. B <a href="#">), aber es sollte für die von Ihnen beschriebene Situation funktionieren.

Andere Tipps

Zum Löschen von Schrägstrichen Verwendung:

generasacodicetagpre.

Siehe auch den PHP-Handbuch: stripcslashes

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