web-dev-qa-db-fra.com

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

Dans PHP 5.3, il existe une fonction Nice qui semble faire ce que je veux:

strstr(input,"\n",true)

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

33
kinokijuf

voici

$str = strtok($input, "\n");

strtok() Documentation

91
Your Common Sense

Il est tard mais vous pourriez utiliser exploser.

<?php
$lines=explode("\n", $string);
echo $lines['0'];
?>
10
Connor Gurney
$first_line = substr($fulltext, 0, strpos($fulltext, "\n"));

ou quelque chose dans les environs ferait l'affaire. Moche, mais réalisable.

6
Marc B

essayer 

substr( input, 0, strpos( input, "\n" ) )
3
Sirko

essaye ça:

substr($text, 0, strpos($text, chr(10))
1
Andrés Torres

non 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 rupture n'a été trouvé (ou si le symbole de rupture est un premier symbole dans le texte).

1
Alexander C
list($line_1, $remaining) = explode("\n", $input, 2);

Il est facile d’obtenir la première ligne et le contenu laissé si vous voulez répéter l’opération. Sinon, utilisez substr comme suggéré.

1
Paul Norman

Vous pouvez utiliser strpos combiné avec substr. Vous trouvez d’abord la position du personnage, puis vous retournez cette partie de la chaîne.

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

if ($pos !== false) {
echo substr($input, 0, $pos);
} else {
echo 'String not found';
}

C'est ce que tu veux ?

l.e. N'a pas remarqué la restriction d'une ligne, ce n'est donc pas applicable telle qu'elle est. Vous pouvez combiner les deux fonctions sur une seule ligne, comme le suggèrent d'autres personnes, ou vous pouvez créer une fonction personnalisée qui sera appelée sur une seule ligne de code, comme vous le souhaitez. Votre choix.

0
misterjinx

Plusieurs fois, la manipulation de chaîne fera face à des vars commençant par une ligne vierge. N'oubliez donc pas d'évaluer si vous voulez vraiment considérer les lignes blanches au début et à la fin de la chaîne, ou les couper. De plus, pour éviter les erreurs de système d’exploitation, utilisez PHP_EOL utilisé pour rechercher le caractère de nouvelle ligne de manière compatible avec plusieurs plates-formes ( Quand utiliser la constante PHP "PHP_EOL"? ).

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