Переключение с пробела на табуляцию в php - PullRequest
2 голосов
/ 03 июня 2011

У меня есть следующий бит кода:

// Loop through returned data and write (append) directly to file
fprintf($fh, "%-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s \n", "ID", "Name", "Description","Price","Merchant Category","URL","Image URL","Manufacturer","Manufacturer Part Number","Brand","Keywords","Quantity","Weight","UPC");

fprintf($fh, "\n");
while ($row = mysql_fetch_assoc($result)) {

 fprintf($fh, "%-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s \n", $row['card_id'], $row['TitleConcat'], $row['description'], $row['price'], $row['Merchant'], $row['link'], $row['ImageURL'], $row['artist'], $row['Part'], $row['Brand'], $row['seo_keywords'], $row['quantity'], $row['Weight'], $row['UPC']);

Как вы видите, он использует пробелы. Есть ли простой способ переключиться на использование вкладок? Я пытался dooing это:

/ Loop through returned data and write (append) directly to file
fprintf($fh, "\t \t \t \t \t \t \t \t \t \t \t \t \t \t \n", "ID", "Name", "Description","Price","Merchant Category","URL","Image URL","Manufacturer","Manufacturer Part Number","Brand","Keywords","Quantity","Weight","UPC");

fprintf($fh, "\n");
while ($row = mysql_fetch_assoc($result)) {

 fprintf($fh, "\t \t \t \t \t \t \t \t \t \t \t \t \t \t \n", $row['card_id'], $row['TitleConcat'], $row['description'], $row['price'], $row['Merchant'], $row['link'], $row['ImageURL'], $row['artist'], $row['Part'], $row['Brand'], $row['seo_keywords'], $row['quantity'], $row['Weight'], $row['UPC']);

 }

Видимо выключен. о_О

Ответы [ 4 ]

3 голосов
/ 03 июня 2011
str_replace(' ',"\t",$string);
2 голосов
/ 03 июня 2011

Если вы хотите, чтобы выводил табуляции вместо пробелов:

// Loop through returned data and write (append) directly to file
fprintf($fh, "%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s \n", "ID", "Name", "Description","Price","Merchant Category","URL","Image URL","Manufacturer","Manufacturer Part Number","Brand","Keywords","Quantity","Weight","UPC");

fprintf($fh, "\n");
while ($row = mysql_fetch_assoc($result)) {
 fprintf($fh, "%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s \n", $row['card_id'], $row['TitleConcat'], $row['description'], $row['price'], $row['Merchant'], $row['link'], $row['ImageURL'], $row['artist'], $row['Part'], $row['Brand'], $row['seo_keywords'], $row['quantity'], $row['Weight'], $row['UPC']);
1 голос
/ 03 июня 2011

Может быть неправильно понято, но , если вы хотите изменить левый символ выравнивания *1003* на табуляцию вместо пробела, вы можете использовать

%'\t-10s

вместо

%-10s

Если вы хотите заменить пробелы между словами на вкладки , просто сделайте то, что другие предложили здесь, str_replace():

$s="%-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s \n";
fprintf($fh, str_replace(' ', "\t", $s), "ID", "Name", "Description","Price","Merchant Category","URL","Image URL","Manufacturer","Manufacturer Part Number","Brand","Keywords","Quantity","Weight","UPC");

Если вы хотите сделать это немного лучше , вы также можете использовать str_repeat, поэтому вам не нужна такая длинная строка формата.

fprintf($fh, str_repeat("%-10s\t", 14)."\n", "ID", "Name", "Description","Price","Merchant Category","URL","Image URL","Manufacturer","Manufacturer Part Number","Brand","Keywords","Quantity","Weight","UPC");
1 голос
/ 03 июня 2011

Если в значениях нет буквальных пробелов, то просто с помощью str_replace () следует его обрезать.

str_replace(' ', "\t", $line);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...