$ str = 'Quelques étiquettes de texte contenu em> plus de texte'; p>
Mes questions sont:
Comment récupérer le contenu et p>
Comment supprimer J'utilise php. p>
merci. p> Tag Contenu em> code> qui est entre $ str code>? p>
5 Réponses :
si et pour les supprimer, utilisez my_tag code> ne peut pas être imbriqué, essayez-le pour obtenir les correspondances: prg_replace code> à la place. p> p>
@ user187580: le drapeau s i> fait le . code> pauses de la ligne de correspondance. Voir php.net/manual/fr/reference.pcre.pattern.Modificateurs .php
Vous feriez mieux de définir ungredy avec ce modèle si vous pouvez trouver cette balise dans la chaîne plus d'une fois. Sinon, vous constaterez que vous convertissez cette chaîne "c'est
@Don the ? Code> après le * code> est exactement le même.
Et j'ai regardé à la bonne réponse et je n'ai pas vu le? modificateur, whoops!
Bien que le seul moyen totalement correct de le faire n'est pas d'utiliser des expressions régulières, vous pouvez obtenir ce que vous voulez si vous acceptez cela ne traitera pas tous les cas spéciaux: et < / p>
Vous ne voulez pas utiliser des expressions régulières pour cela. Une bien meilleure solution serait de charger votre contenu dans un Domdocument et y travailler à l'aide de l'arborescence DOM et Standard DOM Méthodes:
$document = new DOMDocument();
$document->loadXML('<root/>');
$document->documentElement->appendChild(
$document->createFragment($myTextWithTags));
$MY_TAGs = $document->getElementsByTagName('MY_TAG');
foreach($MY_TAGs as $MY_TAG)
{
$xmlContent = $document->saveXML($MY_TAG);
/* work on $xmlContent here */
/* as a further example: */
$ems = $MY_TAG->getElementsByTagName('em');
foreach($ems as $em)
{
$emphazisedText = $em->nodeValue;
/* do your operations here */
}
}
Pour le retrait, je fini par utiliser simplement ceci:
$str = preg_replace('~<MY_TAG(.*?)</MY_TAG>~Usi', "", $str);
Bon travail (Y) Travailler bien pour Span E.G $ Ptitle = Preg_replace ('~ ~ USI', "", $ ptitlewithspan);
J'ai testé cette fonction, cela fonctionne également pour des balises imbriquées, utilisez true / false pour exclure / inclure vos balises. Trouvé ici: https://www.php.net/manual/fr /function.strip-tags.php
<?php
function strip_tags_content($text, $tags = '', $invert = FALSE) {
preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags);
$tags = array_unique($tags[1]);
if(is_array($tags) AND count($tags) > 0) {
if($invert == FALSE) {
return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text);
}
else {
return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text);
}
}
elseif($invert == FALSE) {
return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
}
return $text;
}
// Sample text:
$text = '<b>sample</b> text with <div>tags</div>';
// Result for:
echo strip_tags_content($text);
// text with
// Result for:
echo strip_tags_content($text, '<b>');
// <b>sample</b> text with
// Result for:
echo strip_tags_content($text, '<b>', TRUE);
// text with <div>tags</div>
Je me demande combien de fois la réponse suivante est liée à un jour donné: Stackoverflow.com/questions/1732348/...
HTML Parser Blah Blah Blah ... Vous connaissez la perceuse.