После двух дней поиска по этому сайту, я не могу найти правильный способ решить мой запрос, поэтому, пожалуйста, наведите меня.
У меня есть строка, которая может содержать несколько пар разделителей, вставленных в разные позиции в строке, например:
Быстрый [начало] бурый лис [конец] перепрыгивает через [начало] ленивый [конец] собака.
или
[начало] Быстрый коричневый [конец] лиса перепрыгивает через [начало] ленивый [конец] собака.
Что мне нужно: каждый раз, когда я нахожу эти разделители, я хочу отображать содержимое с разделителями в двух столбцах в pdf, но также сохранять оставшуюся часть строки до и после этих разделителей.
Исходя из первого примера, приведенного выше, мне нужно получить следующий результат:
The quick
$mpdf->SetColumns(2);
brown fox
$mpdf->SetColumns(0);
jumps over
$mpdf->SetColumns(2);
the lazy
$mpdf->SetColumns(0);
dog
Это функция, которую я использую с php. net, но, как вы можете вижу, что это работает только для одной пары разделителей, я не знаю, как использовать foreach здесь, а также сохранить нужный мне формат:
function multiexplode ($delimiters,$string) {
$ready = str_replace($delimiters, $delimiters[0], $string);
$launch = explode($delimiters[0], $ready);
return $launch;
}
$exploded = multiexplode(array('[begin]','[end]'),$mystring);
//if delimiters exist, then split in two columns only those parts of the string
if (count($exploded) > 1) {
//begining of the string
$mpdf->WriteHTML($exploded[0]);
//split in two columns
$mpdf->SetColumns(2);
$mpdf->WriteHTML($exploded[1]);
//reset to single column and write the rest of the string
$mpdf->SetColumns(0);
$mpdf->WriteHTML($exploded[2]);
} else {
//set two columns for the entire string
$mpdf->SetColumns(2);
$mpdf->WriteHTML($mystring);
}
Спасибо