我正在通过PHP和DOM处理MS Office Word文档。我正在给我的文件增加段落。现在我必须使字符串的部分粗体(它从数据库变成,我无法改变它)。这样的:
字符串的部分是粗体。
我做什么:
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前后的空白。我尝试强制添加空格(如上面的代码)。没有什么帮助。我能做什么?
您可以将实际的空格字符替换为
,这不会断行,但会增加一个空格。
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);
}
这个问题的答案解决了问题
解为:
$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);
因为
是一个HTML实体。要添加UTF-8编码的non_breakable_space,我们必须使用"'xC2'xA0"
尝试用" "字符串替换字符串中的空格。这相当于HTML中的"空格"。
所以:
$t1 = new DOMElement('t', " ".$splitted[0]." ", $this->ns);
:
$t1 = new DOMElement('t', " ".$splitted[0]." ", $this->ns);