Question

J'ai un tas de chaînes, chacune contenant une balise d'ancrage et une URL.

chaîne ex.

here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!

Je veux analyser les balises d'ancrage et tout le reste.

résultat ex.

here is a link. enjoy!

Cependant, les URL de la partie href = ne correspondent pas toujours au texte du lien (il existe parfois des URL raccourcies, parfois uniquement du texte descriptif).

J'ai beaucoup de difficulté à comprendre comment faire cela avec des expressions régulières ou des fonctions php. comment puis-je analyser une balise d'ancrage / un lien entier à partir d'une chaîne?

merci!

Était-ce utile?

La solution

Vous ne devez pas utiliser regex à analyser html et utiliser un analyseur HTML à la place.

Mais si vous devez utiliser regex, et que le contenu interne de vos balises d'ancrage est garanti sans HTML comme </a>, et que chaque chaîne ne contient qu'un seul balise d'ancrage, comme dans l'exemple de cas, alors - seulement à ce moment-là - vous pouvez utiliser quelque chose comme:

Remplacement de /^(.+)<a.+<\/a>(.+)$/ par $1$2

Autres conseils

En regardant votre exemple de résultat, il semble que vous supprimiez simplement les balises / le contenu. Souhaitez-vous conserver ce que vous avez supprimé ou non? Sinon, recherchez peut-être strip_tags() .

Puisque votre problème semble être très spécifique, je pense que cela devrait le faire:

$str = preg_replace('#\s?<a.*/a>#', '', $str);

utilisez simplement vos fonctions de chaîne PHP normales.

$str='here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!';
$s = explode("</a>",$str);
foreach($s as $a=>$b){
    if( strpos( $b ,"href")!==FALSE ){
        $m=strpos("$b","<a");
        echo substr($b,0,$m);
    }
}   
print end($s);

sortie

$ php test.php
here is a link . enjoy!
$string = 'here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!';
$text = strip_tags($string);
echo $text; //Outputs "here is a link . enjoy!"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top