Obtenir du contenu entre deux chaînes de caractères en PHP
Whats est la meilleure façon d'obtenir le contenu entre deux chaînes de caractères par exemple
ob_start();
include('externalfile.html'); ## see below
$out = ob_get_contents();
ob_end_clean();
preg_match('/{FINDME}(.|\n*)+{\/FINDME}/',$out,$matches);
$match = $matches[0];
echo $match;
## I have used .|\n* as it needs to check for new lines. Is this correct?
## externalfile.html
{FINDME}
Text Here
{/FINDME}
Pour une raison quelconque, cela semble fonctionner sur une place à part dans mon code et pas un autre. Vais-je à ce sujet dans le droit chemin? Ou est-il un meilleur moyen?
Est également sortie de la mémoire tampon de la manière de faire ceci ou file_get_contents?
Merci d'avance!
- Si cela fonctionne dans certaines situations et pas dans d'autres, vous devriez fournir des exemples de situations où il travaille et quand il ne fonctionne pas.
Vous devez vous connecter pour publier un commentaire.
#
au lieu de/
de sorte que vous n'avez pas à leur échapper.s
fait.
et\s
également inclure des sauts de ligne.{
et}
a diverses fonctionnalités comme de n à m fois dans{n,m}
.La base
Avancée pour les différentes balises etc (style n'est pas si agréable par le javascript).
Mettre ce code dans une fonction
Vous pouvez aussi bien utiliser substr et strpos pour cela.
Vous aurez besoin d'ajouter de vérification d'erreur pour gérer le cas où il n'est pas FINDME.
J'adore ces deux solutions
J'ai aussi fait quelques points de repère avec les deux solutions ci-dessus et les deux sont de donner à peu près le même temps. Vous pouvez l'essayer aussi bien. J'ai donné à la fois les fonctions d'un fichier à lire, qui avait environ 60000 caractères (revue avec Mme Mot du nombre de mots) et les deux fonctions ont donné lieu à environ 0.000999 secondes à trouver.
Les sauts de ligne peut provoquer des problèmes dans les RegEx, essayez de les retirer ou de les remplacer par \n avant le traitement.
Je voudrais éviter d'utiliser des regex, si possible, ici, est solution de rechange afin d'extraire toutes les chaînes de caractères entre deux chaînes de caractères et retourne un tableau.
Résultats :
getInbetweenStrings('start', 'end', 'start get this string end');
C'est une solution PHP qui retourne les chaînes trouvées entre les balises dans une botte de foin. Il fonctionne, mais je n'ai pas testé pour l'efficacité. J'avais besoin de ce et a été inspiré par Adam Wright réponse sur cette page.
Retourne un array() contenant toutes les chaînes trouvées entre $tag et $end_symbold.$tag $botte de foin, ou FALSE si aucun $end_symbol.$tag a été trouvé, donc pas de balise paire existe dans le $botte de foin.
Moyen rapide de mettre le tout en une seule chaîne.