web-dev-qa-db-fra.com

PHP enlever les balises html de la chaîne

J'ai de la ficelle: 

<p justify;"="">Vers­lo cent­rai Lie­tu­vos ne­kil­no­ja­mo­jo turto plėt­ros aso­cia­ci­jos kon­kur­se  ...</p>

et veulent vouloir enlever la balise 

<p justify;"=""></p>

mon code:

$content = strip_tags($text, '<p>');

mais je reçois une chaîne vide: string(0) "", que fais-je de travers?

9
Wizard

Essayez de le dire comme ça 

$content = strip_tags($text);

Ou vous pouvez le faire avec une expression régulière comme celle-ci:

$content = preg_replace('/<[^>]*>/', '', $text);

Par cette $content = strip_tags($text, '<p>');, vous autorisez la balise <p> dans la chaîne.

Pour plus d'informations, voir le lien http://php.net/manual/en/function.strip-tags.php

17
Toretto

Comme le code HTML est mal formaté, vous devez probablement écrire votre propre expression rationnelle pour supprimer les balises ou nettoyer le code HTML avant de tenter de supprimer les balises.

Vous pouvez essayer ceci pour supprimer tout ce qui "ressemble" à un tag:

$str = preg_replace("/<.*?>/", " ", $str);
4
Magnus Lindgren

Cela supprimera tout - tags, ascii, sauts de ligne mais texte pur:

strip_tags(preg_replace('/<[^>]*>/','',str_replace(array("&nbsp;","\n","\r"),"",html_entity_decode($YOUR_STRING,ENT_QUOTES,'UTF-8'))));
4
Wilf

Puisque votre HTML n'est pas correctement formaté, vous pouvez choisir une approche preg_replace():

$text = '<p justify;"="">Vers­lo cent­rai Lie­tu­vos ne­kil­no­ja­mo­jo turto plėt­ros aso­cia­ci­jos kon­kur­se ... </p>';
$content = preg_replace('/<[^>]*>/', '', $text); 
var_dump($content);
// string(108) "Vers­lo cent­rai Lie­tu­vos ne­kil­no­ja­mo­jo turto plėt­ros aso­cia­ci­jos kon­kur­se ... "

Exemple de codepad

Sur strip_tags () docs il dit: Puisque strip_tags () ne valide pas le code HTML, des balises partielles ou brisées peuvent entraîner la suppression de plus de texte/de données que prévu.

Le deuxième paramètre est également pour $allowable_tags.

3
Mihai Iorga

Cela remplacera toutes les balises HTML, https://regex101.com/r/jM9oS4/4

preg_replace('/<(|\/)(?!\?).*?(|\/)>/',$replacement,$string);
0
APetrovsky