distinguer les balises HTML
Bonjour,
Je rencontre actuellement un problème pour un script que j'élabore actuellement.
Principe du Script :
Je souhaite, séparer le contenu "Textuel" (sans liens hypertexte) du contenu "Media" (donc regroupé les images, vidéos etc..), puis afficher 60% du contenu textuel de la chaine..
Exemple :
Code:
<p>Salut dans cette <a href=lol>article</a> il y à une superbe photo <img src="lolilol.com"> voila à bientot!</p>
Sa donnerais :
Code:
1 2 3 4 5
| Partie 1:
<img src="lolilol.com">
Partie 2:
<p>Salut dans cette article il y à une superbe photo voila à bientot!</p> |
Pour cela, j'utilise les regex sous preg_replace..
Voici la fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?
function Cut($String)
{
$String = preg_replace("@\<a[\!]*?[^\[\]]*?\>@", "", $String); // Supression des <a *>
$String = preg_replace("</a>", "", $String); // Supression des </a>
$StringNoMedia = preg_replace("@\<[\!]*?[^\[\]]*?\>@", "", $String); // Supression de toutes les balises
$StringCut = explode(" ", $StringNoMedia);
$words_to_count = strip_tags($StringNoMedia);
$pattern = "/[^(\w|\d|\'|\"|\.|\!|\?|;|,|\\|\/|\-\-|:|\&amp;|@)]+/";
$words_to_count = preg_replace ($pattern, " ", $words_to_count);
$words_to_count = trim($words_to_count);
$total_words = count(explode(" ",$words_to_count));
$cut = $total_words * 0.6;
$NewString = "";
for($i=0;$i<$cut;$i++) {
$NewString .= " ".$StringCut[$i];
}
$NewString .= "";
$i = 0;
return $NewString; // Affichage des données non "Media"
} |
Mais pour afficher UNIQUEMENT les Média type "Vidéos / Images", je n'arrives absolument pas à les afficher (j'ai essayé sous Eregi avec la ligne suivante mais sans succès)
Eregi :
Code:
$Media = eregi("\<img (.*)\>",$String, $img);
Est il possible d'avoir un bon petit coup de main? :D
Merci!