Maison >développement back-end >tutoriel php >Comment tronquer du texte avec du HTML intégré sans casser les balises ?
Tronquage de texte avec HTML intégré
Lorsque vous traitez du texte contenant des balises HTML, il est essentiel d'assurer une manipulation appropriée lors de la troncature pour éviter de casser des balises ou afficher du contenu invalide. Voici comment tronquer du texte tout en préservant l'intégrité du HTML :
Implémentation PHP :
La fonction PHP suivante utilise des expressions régulières pour analyser le HTML et maintient une pile de fichiers ouverts tags :
function printTruncated($maxLength, $html, $isUtf8 = true) { ... }
Cette fonction analyse l'entrée HTML, identifiant les balises et les entités de caractères. Il garantit que les balises sont correctement fermées et compte les entités de caractères comme des caractères uniques. Cette approche garantit que la troncature se produit à un point valide sans casser aucune structure HTML.
Exemple d'utilisation :
printTruncated(10, '<b><Hello&gt;</b> <img src="world.png" alt="" /> world!'); // Outputs: 'Hello<b></b> <img src="world.png" alt="" />'
Implémentation Python :
Les bibliothèques d'analyse HTML comme BeautifulSoup peuvent vous aider dans cette tâche Python :
from bs4 import BeautifulSoup, NavigableString def truncate_html(text, max_length): soup = BeautifulSoup(text, 'lxml') truncated = soup.new_tag("div") tail = soup.new_string('') node_len = 0 for node in soup.children: if isinstance(node, NavigableString): node_len += len(node) if node_len <= max_length: truncated.append(node) else: tail.append(node.string[:max_length - node_len]) break else: node_len += len(str(node)) truncated.append(node) return str(truncated) + str(tail)
Exemple d'utilisation :
print(truncate_html('<b><Hello&gt;</b> <img src="world.png" alt="" /> world!', 10)) # Outputs: 'Hello<b></b> <img src="world.png" alt="" />'
Conclusion :
En analysant et en gérant les balises HTML pendant troncature, ces méthodes garantissent que le texte résultant conserve sa structure prévue et la validité de son contenu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!