2009-08-18 4 views
6

J'ai une longue chaîne en php qui ne contient pas de nouvelles lignes ('\ n').PHP longue chaîne sans nouvelle ligne

Ma convention de codage n'autorise pas les lignes de plus de 100 caractères.

Existe-t-il un moyen de diviser ma longue chaîne en plusieurs lignes sans utiliser le. opérateur qui est moins efficace - Je n'ai pas besoin de concaténer 2 chaînes car elles peuvent être données en tant que chaîne unique.

Merci!

Y

Répondre

0

Avec la syntaxe heredoc (ou nowdoc, en fonction de vos besoins, consultez le lien de documentation):

$multiline = <<<EOT 
My name is "$name". I am printing some $foo->foo. 
This should print a capital 'A': \x41 
EOT; 
$singleline = str_replace("\n","",$multiline); 

Mais ce suce ... désolé :-)

+3

Le problème avec heredoc est qu'il inclura les caractères de nouvelle ligne dans la chaîne, qui devraient alors être enlevés pour obtenir la "chaîne qui ne contient pas de nouvelles lignes" que la question a spécifiée. – Amber

+0

Vous pouvez les supprimer comme Lior montre –

+0

Oui, mais cela aurait également un impact sur les performances tout comme l'utilisation de la concaténation. – Amber

1

Vous pourrait supprimer les caractères de nouvelle ligne de la chaîne:

$myStr = " 
    here is my string 
    and it is spread across multiple lines 
    "; 
    $myStr = str_replace("\n", "", $myStr); 

Vous devriez utilisez toujours l'opérateur de concaténation (.) pour de telles choses. La pénalité liée aux performances est négligeable si vous utilisez la mise en cache des codes d'opération (APC) et cela ne serait vraiment pas perceptible lors de l'accès DB et de la logique supplémentaire (boucles incluses) dans l'équation d'exécution.

Mise à jour:

Donnez la page ci-dessous une lecture. La conclusion ci-dessus n'est pas facilement disponible dans le texte, mais un examen attentif devrait montrer qu'il est valide.

http://blog.golemon.com/2006/06/how-long-is-piece-of-string.html

+0

Comment la mise en cache de l'opcode affecte-t-elle la vitesse de concaténation des chaînes? –

+0

L'analyseur traiterait les chaînes sans élément dynamique comme une longue chaîne, en supprimant les opérateurs de concaténation. J'ai creusé ce sujet il y a quelque temps. Mettra à jour cette réponse avec l'article connexe une fois que je parviens à le retrouver. –

2

Ceci est le bon code, qui a résolu tous les problèmes:

$myStr = " 
    here is my string 
    and it is spread across multiple lines 
    "; 
    $myStr = str_replace(array("\r","\n"), "", $myStr); 

Il est basé sur la réponse de Lior Cohen, mais aussi des bandes retours chariot "\ r".

Questions connexes