J'ai une chaîne HTML qui contient exactement un élément a-élément. Exemple: 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();
...
4 Réponses :
Vous pouvez utiliser une expression régulière comme
Si vous utilisez une bibliothèque pouvant faire ce genre de choses pour vous, c'est beaucoup plus facile (comme JQuery pour JavaScript) P> s'il correspond / \ s + rel \ s * = \ s * ". * externe. *" / code>
Ensuite, faites une réégion à remplacer comme
/ (
J'ai continué à modifier avec DOM. C'est ce que je reçois: Je ne voulais pas charger une autre bibliothèque pour une seule chaîne. p> p>
Le meilleur moyen est d'utiliser un analyseur HTML / DOM, mais voici une solution de regex: démo en ligne . p> p>
Y a-t-il une manière plus simple pour cela ou dois-je le faire avec DOM? P>
le faire avec DOM. P>
Voici un exemple: p>
xxx pré> blockQuote>
$ dom-> sauvegardehtml (); Cette méthode, à partir de 5.2.6, ajoutera automatiquement
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 code>: Stackoverflow.com/Questtions/4879946/...
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 () code> pour la manipulationPersonne ne devrait utiliser les méthodes DOM brut pour la manipulation. Considérons phpisserie ou QueryPath, etc. Pour réduire la chaudron fastidieuse.