J'ai un problème avec les expressions régulières! Comment puis-je compter les tags html avec regex?Comment compter les balises html et le contenu
Répondre
Ne pas utiliser regexp utiliser le DOM. Je ne suis pas sûr comment vous le feriez mais il sera presque certainement plus facile avec le DOM: http://php.net/manual/en/book.dom.php
Merci. La classe DomDocument est bonne, et résout mon problème, mais j'ai une dernière question. J'ai des métabalises: J'ai besoin du nom - (mots-clés) et le contenu - (quelque chose de tout). Comment puis-je obtenir le nom et le contenu avec la classe DomDocument? – turbod
$ meta = $ dom-> getElementsByTagName ('meta'); for ($ i = 0; i longueur < $meta-> $; $ i ++) {echo méta- $> item ($ i) -> getAttribute ('name') "-" $ méta-> item ($ i..) -> getAttribute ('content'). "
"; } –
turbod
Vous n'en avez pas! Pourquoi ne pas essayer le DOMDocument classe
Les expressions régulières ne sont pas conçues pour faire cela. Il y a une meilleure solution à votre problème, vérifiez simplement les autres réponses.
Si vous avez besoin juste cette fois, comme un hack rapide et sale, et ne se soucient pas de cas de bord (comme échappé balises utilisés dans les chaînes), vous pouvez utiliser "<\w+"
pour faire correspondre les balises de départ, et compter le nombre de matches .
Mais vous ne devriez pas le faire de cette façon. =)
$data=file_get_contents("file");
$data=preg_replace("/\n+|[[:blank:]]+/","",$data);
print "number of tags: ". substr_count($data, '<');
- 1. Comment saisir le contenu des balises HTML?
- 2. Comment obtenir le contenu des balises html
- 3. Compter tous les balises HTML dans la page PHP
- 4. Comment supprimer les balises HTML et le contenu, les valeurs à l'intérieur des balises en utilisant des expressions régulières
- 5. Comment rechercher et corriger les balises et les attributs html?
- 6. insérer/supprimer du contenu HTML entre les balises div
- 7. Les balises HTML ne contiennent pas de contenu
- 8. Remplacer le contenu HTML entier tue les balises HEAD et BODY après la requête HTTP!
- 9. Les vignettes Apache convertissent les balises ouvertes et les balises de fermeture sans contenu en balises vides
- 10. Supprimer toutes les balises HTML et le formatage (RegEx)
- 11. Remplacer les balises html
- 12. balises html dans les balises d'option
- 13. Compter les balises contenues dans un iframe en utilisant jquery
- 14. Comment supprimer des balises html?
- 15. Comment garder les balises HTML spécifiées
- 16. Comment autoriser certaines balises html et interdire les autres?
- 17. Comment autoriser les balises dans HTML Purifier?
- 18. Remplacer dynamiquement les balises html
- 19. enregistrer les balises html et et de reproduire correctement
- 20. Balises Html DIV et SPAN
- 21. ASP.NET MVC comment afficher les balises html en html?
- 22. Erreur impaire avec le contenu HTML et les attributs disparaissant
- 23. problème alors que le nœud analyse avec les balises HTML
- 24. ruby on rails expression régulière pour supprimer les balises html et son contenu du texte
- 25. contenu d'analyse syntaxique des balises HTML en utilisant regex
- 26. preg_replace les données entre les balises html
- 27. Insertion de balises de fin pour les balises manquantes html
- 28. Balises d'ancrage et comportement cible? - HTML
- 29. Comment supprimer toutes les balises html sauf img?
- 30. JavaScript pour ajouter des balises HTML autour du contenu
Vous plaisantez, n'est-ce pas? Si non, non, vous ne pouvez pas et vous ne devriez pas. Lire http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – Amarghosh
Il suffit de compter le nombre de '<' - cela vous donnera le même type de précision que vous pouvez obtenir avec une regex. –
Aussi, même si vous êtes prêt à faire face aux problèmes d'utilisation, regex ne compte pas. Au minimum, vous devez utiliser, par exemple, perl pour charger le html dans une variable et faire un split() sur "<" (à l'exclusion de " Timo