Я работаю с документом 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. Я пытался форсировать добавление пробелов (как в коде выше). Ничего не помогает Что я могу сделать?
Ответы на этот вопрос решил проблему
Решение проблемы:
$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"
Вы можете заменить реальные пробелы на
Который не ломает линию, но добавляет пробел.
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);
}
Попробуйте заменить ваши пробелы в строках строкой «». Это эквивалент HTML для «пробела», так сказать.
так что вместо:
$t1 = new DOMElement('t', " ".$splitted[0]." ", $this->ns);
делать:
$t1 = new DOMElement('t', " ".$splitted[0]." ", $this->ns);