Quelqu'un aurait-il un bout de code PHP du code pour extraire la première “phrase” dans une chaîne de caractères?
Si j'ai une description comme:
"Nous préférons les questions qui peuvent être répondues, et pas seulement discuté. Fournir des détails. Écrire clairement et simplement."
et tout ce que je veux est "Nous préférons les questions qui peuvent être répondues, et pas seulement discuté."
Je l'ai trouver je recherche une expression régulière, comme "[.!\?]", déterminer la strpos et puis faire un substr de la chaîne principale, mais j'imagine que c'est une chose commune à faire, donc en espérant que quelqu'un a un extrait qui traînent.
Merci!
OriginalL'auteur FilmJ | 2009-07-16
Vous devez vous connecter pour publier un commentaire.
Un peu plus coûteux expression, sera toutefois plus adaptable si vous souhaitez sélectionner plusieurs types de ponctuation comme phrase terminateurs.
Trouver la terminaison des caractères suivi d'un espace
En fait, juste rendu compte que c'était il manque une pièce. Parce qu'il s'empare de tout jusqu'à la fin, il tombe le réel signe de ponctuation. Un "." à la fin de l'expression de recherche à l'intérieur des parenthèses semble résoudre. preg_replace('/([^?!.]*.).*/', '\\1', $str);
Vous devez avoir saisi le code avant que j'ai modifié 🙂 Si vous regardez encore une fois c'est ce que j'ai posté.
oui, j'ai vu que juste après que j'ai posté mon commentaire. Quelqu'un ci-dessous fait le point qu'il convient de période (ou autre phrase terminator), suivie par au moins un espace vide (pour les noms de domaine par exemple). J'ai pris un coup de couteau, mais n'était pas en mesure de comprendre le droit d'expression et d'ajouter "\s" n'a pas fonctionné.
Cette regex échoue si la période est suivie par une nouvelle ligne au lieu d'un espace. Vous pouvez l'exécuter à travers
preg_replace( '/\s+/', ' ', $text);
premier.OriginalL'auteur Ian Elliott
Cependant, pas toutes les phrases se terminent par".". J'ai besoin de quelque chose qui permettrait de traiter avec des "!" et "?" et je suis sûr que, donc, il aurait à utiliser regexp, je pense.
Vous pouvez partager des éléments de $array par '!', '?', etc.
Mais vous ne pouvez pas sélectionner de façon dynamique pour diviser par.
OriginalL'auteur Jason
Mon précédent regex semblait travailler dans le testeur, mais pas en PHP. J'ai édité cette réponse permettant de faire un travail code PHP, et une amélioration de la regex.
Désolé, réécrit et il fonctionne maintenant le code PHP.
donc, ce n'est pas seulement travaillé aujourd'hui, mais en fin de compte, il en fait pris en charge mon problème réel, tandis que Ian n'a pas... (même si au premier abord c'était le cas). Comme je l'ai commenté il y a ci-dessus, peut-être cela est dû au fait que les résultats sont des chaînes Unicode... ne sais pas, mais la nourriture pour la pensée. Merci pour la fonction, je vais defin. l'utiliser encore et encore.
OriginalL'auteur dyve
De sortie est:
OriginalL'auteur Muhammad Younas
OriginalL'auteur p00ya
OriginalL'auteur
Je serais probablement utiliser une des multitudes de sous-chaîne/chaîne-partager les fonctions en PHP (certains ont parlé déjà ici).
Mais aussi de chercher ". "OU ".\n" (et éventuellement ".\n\r") au lieu de ".". Juste au cas où, pour quelque raison que ce soit, la phrase contient une période qui n'est pas suivie par un espace. Je pense qu'il va durcir les chances de vous obtenir de véritables résultats.
Exemple, la recherche du juste "." sur:
Vous obtiendrez:
Quand vraiment, je suis sûr que vous préférez:
Et une fois que vous avez que la recherche de base, vous aurez probablement une ou deux occasions où il peut manquer quelque chose. Tune que vous exécutez avec elle!
Je ne pense toutefois que de nombreuses chaînes de caractères (et certains dans mon projet) va avoir des URLs... donc il serait bon de trouver la solution pour que, même si la réponse acceptée ci-dessus est bonne pour l'instant.
OriginalL'auteur Alexander Trauzzi
C'est réellement un problème difficile. Je recommande à la recherche en PNL paquet si vous avez besoin des résultats robustes. Un générateur de jetons peut identifier phrase caractères de fin (soit "?", ".", ";" etc selon votre utilisation), et vous pouvez les diviser.
OriginalL'auteur Kevin Peterson