2010-04-14 4 views
2

J'ai un script PHP que j'appelle d'un autre script shell qui envoie un email automatisé avec un message généré à partir du script shell. Le problème est, quand j'envoie le message tous les caractères de nouvelle ligne sont imprimés dans le message. Comment puis-je les faire interpréter?Les nouvelles lignes ne sont pas interprétées lorsqu'elles sont passées à php via la ligne de commande

sendmail.sh:

/path/to/phpscript/sendmail.php "Some Message With Newlines\nHello World.\n" 

sendmail.php:

$message = $argv[1] . "\nNewline"; 
$smtp->send($to, $from, $message); 

La chose étrange est \ n après la variable $ argv est interprété et imprime effectivement Newline sur une nouvelle ligne, mais les newlines dans la variable $ argv ne le font pas, j'ai essayé d'envelopper la variable entre guillemets entre autres mais jusqu'ici en vain.

Répondre

3

Qu'en est-il d'appeler votre script avec réel: les nouvelles lignes

$ php temp.php "Some Message With Newlines 
> Hello World. 
> " 

Avec temp.php contenant ceci:

var_dump($argv[1]); 

me fait la sortie suivante:

string(40) "Some Message With Newlines 
Hello World. 
" 



Edit: Une autre solution pourrait être d'utiliser quelque chose comme ceci pour appeler votre script PHP:

$ echo -e "Some Message With Newlines\nHello World.\n" | php temp.php 

Et, modifiez votre script PHP il lu à partir stdin, au lieu de :

var_dump(file_get_contents('php://stdin')); 
+0

Excellente, ça a marché! Merci beaucoup! – CarbonX

+0

De rien :-) Amusez-vous! –

Questions connexes