12
votes

Modifier l'attribut HTML avec PHP

J'ai une chaîne HTML qui contient exactement un élément a-élément. Exemple: xxx pré>

dans php, je dois tester si rel em> contient externe em> et si oui, puis modifiez href em > et enregistrez la chaîne. P>

J'ai cherché des nœuds et des objets DOM. Mais ils semblent être trop pour un seul a-élément, car je dois itérer pour obtenir des nœuds html et je ne suis pas sûr comment tester si rel em> existe et contient externe em >. P>

$html = new DOMDocument();
$html->loadHtml($txt);
$a = $html->getElementsByTagName('a');
$attr = $a->item(0)->attributes();
...


3 commentaires

Lorsqu'il s'agit de DOM, vous avez deux options: 1) Utilisez DOM Parser 2) Utilisez une expression régulière (qui est en tête)


Continue. Utilisez DOMDocument () pour la manipulation


Personne ne devrait utiliser les méthodes DOM brut pour la manipulation. Considérons phpisserie ou QueryPath, etc. Pour réduire la chaudron fastidieuse.


4 Réponses :


0
votes

Vous pouvez utiliser une expression régulière comme s'il correspond / \ s + rel \ s * = \ s * ". * externe. *" / Ensuite, faites une réégion à remplacer comme / (] *>) / \ 1 [votre nouveau href ici] \ 3 /

Si vous utilisez une bibliothèque pouvant faire ce genre de choses pour vous, c'est beaucoup plus facile (comme JQuery pour JavaScript)


0 commentaires

2
votes

J'ai continué à modifier avec DOM. C'est ce que je reçois: xxx

Je ne voulais pas charger une autre bibliothèque pour une seule chaîne.


0 commentaires

1
votes

Le meilleur moyen est d'utiliser un analyseur HTML / DOM, mais voici une solution de regex: xxx

démo en ligne .


0 commentaires

12
votes

Y a-t-il une manière plus simple pour cela ou dois-je le faire avec DOM?

le faire avec DOM.

Voici un exemple: xxx


3 commentaires

$ dom-> sauvegardehtml (); Cette méthode, à partir de 5.2.6, ajoutera automatiquement et Tags au document s'ils manquent, sans demander si vous les voulez.


Une explication de la requête serait bénéfique pour les chercheurs.


@Marcinjaworski Merci pour la tête haute - on dirait que le correctif est de passer des indicateurs sur Loadhtml : Stackoverflow.com/Questtions/4879946/...