52 votes

Obtenir la première ligne d'une chaîne en PHP

En PHP 5.3, il y a une fonction sympa qui semble faire ce que je veux:

strstr(input,"\n",true)

Malheureusement, le serveur utilise PHP 5.2.17 et le troisième paramètre facultatif de strstr n'est pas disponible. Existe-t-il un moyen d'atteindre cela dans les versions précédentes en une seule ligne ?

0 votes

Vous voudrez peut-être utiliser des guillemets doubles autour de cela \n. Quand je l'avais entre apostrophes en créant du contenu de courrier électronique, le caractère de saut de ligne \n était simplement affiché comme des caractères normaux.

1 votes

Pourquoi la restriction de une seule ligne ?

1voto

Andrés Torres Points 592

Essayez ceci :

substr($text, 0, strpos($text, chr(10)))

1voto

Paul Norman Points 1006
list($line_1, $remaining) = explode("\n", $input, 2);

Rend facile la récupération de la première ligne et du contenu restant si vous souhaitez répéter l'opération. Sinon, utilisez substr comme suggéré.

0 votes

Vous pouvez omettre le reste bien que

0 votes

Tu pourrais, mais comme je l'ai déjà mentionné, si tu voulais les X premières lignes, alors utiliser ma méthode initiale "list($line_1, $remaining) = explode("\n", $input, 2);" permettrait une action répétitive. Avec cette modification, mon post est plutôt sans signification!? Cela semble juste comme une modification très étrange à faire...

0 votes

Eh bien, pour les appels conséquents strtok serait toujours mieux.

1voto

Alexander C Points 11

Pas dépendant du type de symbole de saut de ligne.

(($pos=strpos($text,"\n"))!==false) || ($pos=strpos($text,"\r"));

$firstline = substr($text,0,(int)$pos);

$firstline contient maintenant la première ligne du texte ou une chaîne vide, si aucun symbole de saut de ligne n'a été trouvé (ou si le symbole de saut est le premier symbole dans le texte).

0voto

misterjinx Points 1783

Vous pouvez utiliser strpos combiné avec substr. D'abord, vous trouvez la position où se trouve le caractère, puis vous retournez cette partie de la chaîne.

$pos = strpos(input, "\n");

if ($pos !== false) {
echo substr($input, 0, $pos);
} else {
echo 'Chaîne non trouvée';
}

Est-ce que c'est ce que vous voulez ?

l.e. Je n'avais pas remarqué la restriction d'une seule ligne, donc cela n'est pas applicable tel quel. Vous pouvez combiner les deux fonctions en une seule ligne comme d'autres l'ont suggéré ou vous pouvez créer une fonction personnalisée qui sera appelée en une seule ligne de code, comme vous le souhaitez. C'est à vous de choisir.

0 votes

Une restriction d'une ligne? Y a-t-il une raison à cela? Vous savez que vous pouvez toujours créer votre propre fonction qui peut être appelée plus tard en juste une ligne de code, n'est-ce pas?

0voto

Benjamin Points 330

De nombreuses fois, la manipulation de chaînes de caractères rencontrera des variables qui commencent par une ligne vide, alors n'oubliez pas d'évaluer si vous voulez vraiment considérer les lignes blanches au début et à la fin de la chaîne, ou les supprimer. De plus, pour éviter les erreurs liées au système d'exploitation, utilisez PHP_EOL pour trouver le caractère de nouvelle ligne de manière compatible avec toutes les plateformes (Quand dois-je utiliser la constante PHP "PHP_EOL" ?).

$lines = explode(PHP_EOL, trim($string));
echo $lines[0];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X