Question

Je suis simplephpdom pour obtenir de l'aide a des liens href valeurs avec ce code :

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

Maintenant, le problème est que si le lien est en commençant par une barre oblique (/) le lien sera pas valide !

Comment puis-je avoir des liens valides ?

Par exemple , le lien est comme ceci :

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

si j'utilise phpsimpledom code, je vais avoir :

/news45454.html

Mais, je veux avoir :

http://example.com/news45454.html

Comment faire pour l'obtenir?

Pouvons-nous tester , si le lien était en commençant par une barre oblique , puis ajouter l'url du site à elle ?!Comment ?

Était-ce utile?

La solution

Fondamentalement, vous avez besoin de tester si l'élément HREF valable URL complète.Si la validation réussit, vous pouvez aller de l'avant et de l'ajouter au tableau.Toutefois, si la validation échoue, vous avez besoin de concaténer le nom de base (qui doit être de domaine du site web).

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

Ce peut-être besoin d'un peu de peaufinage pour d'autres cas (comme <a href="#">) mais il doit travailler pour la situation que vous avez décrite.

Autres conseils

Supprimer des barres obliques utilisez:

string stripcslashes ( string $str )

Voir également le Manuel PHP: Stripslashes

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