Hinzufügen eines \n newline-symbol bei der Verwendung von sprintf in PHP
Ich versuche zu exportieren vorhandener Daten aus einer MySQL-Datenbank, in die ruby Befehle, die ich ausführen kann, mit rake db:seed
.
Hier ist mein code.
# Generate db:seed data for proveedores.
$proveedores = R::findAll('tbproveedores');
$proveedoresE = R::exportAll($proveedores);
foreach ($proveedoresE as &$p) {
$line = 'BookSupplier.create(company: "%s", city: "%s", country: "%s", address: "%s", telephone: "%s", contact: "%s", email: "%s", website: "%s"\n';
$exportedLine = sprintf($line, $p['empresa'], $p['ciudad'], $p['pais'], $p['direccion'], $p['telefono'], $p['personacontacto'], $p['email'], $p['website']);
var_dump($exportedLine);
fwrite($seeds, $exportedLine);
echo "<br />";
}
Beachten Sie die \n
newline-symbol am Ende des $line variable. Ich habe online gelesen, dass das war alles, was nötig ist, verwenden Sie ein newline.
Die Ausgabe von meinem code oben ist (vertabim, eine lange Linie):
BookSupplier.create(company: "Pearson", city: "Lima", country: "Peru", address: "Av. Limon", telephone: "4673535421", contact: "Javier", email: "", website: ""\nBookSupplier.create(company: "Project Management Institute - PMI", city: "Pennsylvania", country: "Estados Unidos", address: "Newtown Square, Pennsylvania", telephone: "1", contact: "Limberg Morales", email: "", website: "http://www.pmi.org/"\nBookSupplier.create(company: "UVirtual - Centro de Excelencia", city: "Santa Cruz", country: "Bolivia", address: "Av. Irala 585", telephone: "1", contact: "Limberg Morales", email: "", website: ""\nBookSupplier.create(company: "Ábaco de Rodolfo Depalma", city: "Buenos Aires", country: "Argentina", address: "Viamonte 1336, 4° (C1053 ACB) Buenos Aires", telephone: "5411-43711675", contact: "Limberg Morales", email: "", website: "http://www.abacoeditorial.com.ar/"\nBookSupplier.create(company: "Pablo Lledó - ProjectManagement", city: "Canadá", country: "Estados Unidos", address: "Victoria, BC, Canadá", telephone: "1", contact: "Limberg Morales", email: "", website: ""\n
Möchte ich jeden aufrufen, werden in einer eigenen Zeile, nach meiner newline einfügen. Irgendwelche Vorschläge, was ich falsch mache?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Newline-symbol
\n
wird nur interpretiert, wenn Sie eingeschlossen ist in Doppel - Zitate:"
. So:Sollten Sie auch wissen, über
PHP_EOL
Es ist eine Konstante, enthält die Systeme Zeilenvorschub Trennzeichen, die unterschiedliche auf verschiedenen Betriebssystemen. Zum Beispiel wird es\n
auf Linux, aber\r\n
auf Windows. Die meisten portablen code würde wie folgt Aussehen:Wenn Sie nicht können (oder nicht wollen), wechseln Sie zu doppelten Anführungszeichen können Sie einen Zeilenumbruch im ASCII-code in etwa so:
Den
%c
können Sie fügen Sie eine beliebige ASCII-code und 10 ist der code für einen Zeilenumbruch.Müssen Sie die Verwendung von double-quoted strings, single quoted nicht erweitern Sonderzeichen-Sequenzen. Check-out das Handbuch für mehr details über PHP strings.
Sonderzeichen in strings nur arbeiten, wenn es in doppelte Anführungszeichen eingeschlossen ("). Finden Sie die PHP string-Dokumentation für weitere Informationen.
Also entweder doppelte Anführungszeichen verwenden, das ist eine Menge Arbeit, wie Sie schon ein paar doppelte Anführungszeichen als gut. Und die Flucht alle doppelten Anführungszeichen innerhalb der Zeichenfolge.
Oder wenn Sie faul sind, verketten Sie die neue Zeile danach:
Nach Josh ' s Antwort, könnten Sie injizieren Zeile aus einem interpolierten Strings in printf mit %s
printf('something%s', "\n")
die beginnt, mehr Sinn machen in einem komplexeren Beispiel - wenn z.B. die string-Vorlage gespeichert ist, in einer Sprache, die Variablen, oder du machst mehrere Ersetzungen, oder einfach nur zu halten mit sprintf, weil Ihr PHB-es verlangt.In deinem Fall wäre es
Ich formatiert habe eine E-Mail-header-block so:
Wiederholung der Verwendung des
\r\n
mit der1$
parameter index-syntax.So
%2$s
wird die neue\r\n
, nicht nehmen, sich extra chars, aber ist schwerer zu Lesen!Anführungszeichen sind obligatorisch \n(oder andere whitescpace char wie \t) zu arbeiten.