PHP DOM文档忽略附加nodeValue的空白


PHP DOM Document ignore whitespaces appending nodeValue

我正在通过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);