我正在嘗試對齊電子郵件的基於文本的項目列表。基本上我遇到的問題是它僅適用於固定寬度(等寬字體)的字體 - 我想要一個基於標準Arialish字體中每個字母寬度的腳本。基於寬度的字母與sprintf對齊
function sprintf_nbsp() {
$args = func_get_args();
return str_replace(' ', ' ', vsprintf(array_shift($args), array_values($args)));
}
$format = '%-6s%-\'.35.35s...%\'.10s<br>';
$str = sprintf_nbsp($format, '1', 'A list of items - this is the first', '$49.99');
$str .= sprintf_nbsp($format, '100', 'This is something else', '$4.99');
$str .= sprintf_nbsp($format, '5', 'A book', '$499.99');
$str .= sprintf_nbsp($format, '16', 'Testing the function', '$49.99');
echo '<div style="font-family:Courier">'.$str."</div>";
echo '<br><br>'.$str;
(在sprintf_nbsp()可能沒有必要,我只是發現它的PHP論壇,我接受其他解決方案)
因爲無法確定PHP中每個字母的寬度,所以您無法在PHP中執行此操作 - 您需要使用CSS樣式或等寬字體來實現所需的輸出。 – nickb 2012-02-06 20:28:50
那麼你會如何建議我處理這個問題? – 2012-02-06 20:59:32