2010-05-14 4 views
0

Я создаю PDF-файл из txt-шаблона с tcpdf ([Пример 8] [1]). Шаблон txt выглядит так:String padding для текстового шаблона

SALUTATION 
FIRSTNAME LASTNAME        
STREET      CURRENTDATE 
SOMEMOREINFORMATION       MYWEBSITE 

Я заменяю эти маркеры на правильное значение. Так что это будет выглядеть следующим образом:

Mr. 
John Doe     
Downingstreet 10   14th May, 2010 
[email protected]         www.stackoverflow.com 

В этом примере, когда я заменяю значение, то отступы от даты зависят от длины названия улицы (которые я не хочу). Я мог бы решить эту проблему с помощью str_pad, но проблема в том, что я обычно использую три столбца, и есть строки, которые имеют только контент в col1 и col3, как в последней строке. Как я могу решить эту проблему? Есть ли что-то вроде «перезаписывающей» функции в Word, что при написании текст просто перезаписывается?

Заранее спасибо.

ответ

1

Длина строки улицы улицы, а затем добавить/удалить левую прокладку даты.

0

Вы можете использовать sprintf, например.

function something($street, $currentDate, $foo) { 
    $s = sprintf('%-20s %-18s %s', 
    $street, 
    $currentDate, 
    $foo 
); 
    return $s; 
} 

echo something('streetA', '14th May, 2010', 'lalala'), "\n"; 
echo something('Downingstreet 10', '14th May, 2010', 'lalala'), "\n"; 
echo something('abcdefghijklmnopqrstuvwxyz 10', '14th May, 2010', 'lalala'), "\n"; 

печатает

streetA     14th May, 2010  lalala 
Downingstreet 10  14th May, 2010  lalala 
abcdefghijklmnopqrstuvwxyz 10 14th May, 2010  lalala 

(как вы можете видеть из третьей строки ширина спецификация является минимальная длина, так что вы, возможно, придется использовать что-то вроде substr())

0

Я полагаю, вы просто str_replace() 'заполнители с их значениями?

$streetPlaceHolder = 'STREET      '; 
$streetReplacement = str_pad('Downingstreet 10', strlen($streetPlaceHolder)); 
$template = str_replace($streetPlaceHolder, $streetReplacement, $template); 

Предположительно, у вас возникнет проблема с SOMEMOREINFORMATION. Это же решение можно использовать.

Я понимаю, что вы сказали, что str_pad не является идеальным решением для вас. Однако я не понимаю, почему, даже если вы распространите это на три столбца. Вы все еще можете справиться с этим методом.

Смежные вопросы