regex php - trouver les choses dans le div avec l'ID de
Je suis sûr que c'est facile, et d'autant que j'ai googlé et recherche ici sur ce que je n'arrive pas à comprendre quel est le problème avec cela. J'ai d'autres zones sur cette page où j'utilise des expressions similaires qui renvoient exactement ce que je veux.
Cependant, je ne peux pas obtenir ce bit particulier pour revenir à ce que je veux, donc peut-être que quelqu'un pourra m'aider.
J'ai un div avec l'ID de l'utilisateur "-sous-commhome" - j'ai envie de sortir le texte à partir de l'intérieur de ce div. Le texte est entouré par les balises, mais je peux facilement utiliser strip_tags pour obtenir ces partis. Je suis en utilisant les regex pour essayer de l'extraire les données.
Voici mon code:
$intro = "<div id="user-sub-summary">Summary</div>
<div id="user-sub-commhome"><em>Commercial</em></div>
<div id="whatever">whatever</div>";
$regex = '#\<div id="user-sub-commhome"\>(.+?)\<\/div\>#s';
preg_match($regex, $intro, $matches);
$match = $matches[0];
echo $match;
J'ai essayé de changer les choses, sans succès, rien ne semble fonctionner à l'écho rien. J'espère donc que peu de pouvoir que l'être qui est beaucoup plus expérimenté avec la regex peut vous aider.
Je suggère que vous essayez d'utiliser un analyseur html au lieu de regex pour cette tâche. Voir stackoverflow.com/q/1732348/159388.
Oui, c'est juste un exemple de code. $intro est en fait un gros morceau de html, je viens de donner comme un exemple pour que les gens puissent voir de quoi je parlais un peu plus clair.
Votre modèle fonctionne très bien avec le HTML de ne pas prendre en compte les erreurs de syntaxe PHP remarqué par Devator. Échapper les guillemets doubles.
OriginalL'auteur Hanny | 2011-08-16
Vous devez vous connecter pour publier un commentaire.
Votre code fonctionne pour moi si vous modifiez l'affichage de doublequotes autour de
$intro
de guillemets simples:Vous voudrez peut-être lire quelques célèbres conseils sur les expressions régulières et HTML.
OriginalL'auteur Otterfan
je ne vais pas expliquer pourquoi à l'aide des expressions régulières pour analyser php est une mauvaise idée. je pense que le problème ici c'est que vous n'avez pas activé la fonction error_reporting ou vous êtes tout simplement pas à la recherche dans votre erreur du journal. la définition de la
$intro
-chaîne de la manière que vous ne devrait causer beaucoup de problèmes (unexpectet quel que soit /unterminatet chaîne). il devrait ressembler à ceci:ou ceci:
si vous utilisez des guillemets à l'intérieur d'un double-quotet chaîne, vous avez à les masquer à l'aide d'une barre oblique inverse (
\
). anoter moyen serait d'utiliser des guillemets simples pour la chaîne (comme dans mon deuxième exemple).OriginalL'auteur oezi
Dans votre exemple de code
$matches[0]
contient tous appariés partie, pas la capture d'un groupe. La capture d'un groupe est en$matches[1]
OriginalL'auteur Hnatt