PHP DOM Document忽略附加nodeValue的空格

时间:2015-06-04 18:54:08

标签: php dom docx

我正在通过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之前和之后的空格。我试图强制添加空格(如上面的代码所示)。什么都没有帮助。我该怎么办?

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

this问题的答案解决了这个问题

解决方案是:

$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"

答案 2 :(得分:-1)

尝试用“”字符串替换字符串中的空格。对于“空间”来说,这是HTML等价物。

所以代替:

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

做的:

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