55 votes

PHP - Suppression de la balise <img>d'une chaîne de caractères

J'ai besoin de supprimer toutes les images d'une chaîne et je n'arrive pas à trouver la bonne façon de le faire.

Voici ce que j'ai essayé, mais ça ne marche pas :

preg_replace("/<img[^>]+\>/i", "(image) ", $content);
echo $content;

Des idées ?

144voto

Sean Bright Points 39480

Essayez de laisser tomber le \ devant le > .

Edit : Je viens de tester votre regex et cela fonctionne bien. C'est ce que j'ai utilisé :

<?
    $content = "this is something with an <img src=\"test.png\"/> in it.";
    $content = preg_replace("/<img[^>]+\>/i", "(image) ", $content); 
    echo $content;
?>

Le résultat est :

this is something with an (image)  in it.

18voto

John Kugelman Points 108754

Vous devez réaffecter le résultat à $content comme preg_replace ne modifie pas la chaîne originale.

$content = preg_replace("/<img[^>]+\>/i", "(image) ", $content);

10voto

Benoit Points 39210

Je suggère d'utiliser le strip_tags método.

7voto

Yunieskid Points 61

Sean, cela fonctionne bien, je viens d'utiliser ce code.

$content = preg_replace("/<img[^>]+\>/i", " ", $content); 
echo $content;

//le résultat n'est que le texte brut. Ça marche ! !!

1voto

Laura Murray Points 1

Je voulais afficher les 300 premiers mots d'un article en tant qu'aperçu, ce qui signifiait malheureusement que si un article contenait une image dans les 300 premiers mots, celle-ci était affichée dans la liste des aperçus, ce qui perturbait vraiment ma mise en page. J'ai utilisé le code ci-dessus pour masquer toutes les images de la chaîne tirée de ma base de données et cela fonctionne à merveille !

$news = $row_latest_news ['content'];
$news = preg_replace("/<img[^>]+\>/i", "", $news); 
if (strlen($news) > 300){
echo substr($news, 0, strpos($news,' ',300)).'...';
} 
else { 
echo $news; 
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X