PHP DOM Document игнорирует пробелы, добавляя nodeValue

Я работаю с документом MS Office Word через PHP и DOM. Я добавляю параграфы в свой документ. И теперь я должен сделать часть строки жирным шрифтом (она становится из базы данных, и я не могу ее изменить). Как это:

Часть строки смелый действительно.

Что я делаю:

    if(strpos($input, $search)) {
$splitted  = explode($search, $input);
$t1 = new DOMElement('t', " ".$splitted[0]." ", $this->ns);
$t2 = new DOMElement('t', " ". $search ." ", $this->ns);
$t3 = new DOMElement('t', " ".$splitted[1]." ", $this->ns);
}

И после того, как я добавлю этот элемент в документ. Но я получаю:

Часть строкисмелыйдействительно.

Он удаляет пробелы до и после nodeValue. Я пытался форсировать добавление пробелов (как в коде выше). Ничего не помогает Что я могу сделать?

0

Решение

Ответы на этот вопрос решил проблему

Решение проблемы:

$t1 = new DOMElement('t', $splitted[0], $this->ns);
$t2 = new DOMElement('t', "\xC2\xA0". $search ."\xC2\xA0", $this->ns);
$t3 = new DOMElement('t', $splitted[1], $this->ns);

Так как   является N-сущностью HTML. Для добавления UTF-8 в кодировке non_breakable_space мы должны использовать "\xC2\xA0"

0

Другие решения

Вы можете заменить реальные пробелы на   Который не ломает линию, но добавляет пробел.

if(strpos($input, $search)) {
$splitted  = explode($search, $input);
$t1 = new DOMElement('t', ' '.$splitted[0].' ', $this->ns);
$t2 = new DOMElement('t', ' '. $search .' ', $this->ns);
$t3 = new DOMElement('t', ' '.$splitted[1].' ', $this->ns);
}
0

Попробуйте заменить ваши пробелы в строках строкой «». Это эквивалент HTML для «пробела», так сказать.

так что вместо:

$t1 = new DOMElement('t', " ".$splitted[0]." ", $this->ns);

делать:

$t1 = new DOMElement('t', " ".$splitted[0]." ", $this->ns);
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector