와
<text:p >Lorem<text:s/>ipsum.</text:p>
을 따라서 내가 XMLReader를 사용하고 있습니다. 거의 모든 것이 내가 필요로하는대로 작동하고 있습니다. 그러나 < 텍스트 : s /> 요소가 나를 위해 약간의 문제를 만듭니다. 난 그냥 텍스트를 얻기 위해 내가 expand()->textContent
을 사용하고 서식 태그 (즉, 굵은 글씨)를 제거하려는 것처럼 '. 로렘 입숨'
$reader = new XMLReader();
if (!$reader->open("content.xml");
while ($reader->read()) {
if ($reader->nodeType == XMLREADER::ELEMENT && $reader->name === 'text:p') echo utf8_decode($reader->expand()->textContent);
}
내가 얻을 것이 경우를 'Lorem ipsum'대신에. 모든 < 텍스트를 공백으로 대체하려면 어떻게합니까 : s/> 공백이 있어야합니다.
업데이트 : 내가 이런 식으로했다 : preg_replace("/<\\/?text:s(\\s+.*?>|>)/", " ", utf8_decode($reader->readInnerXML()))
업데이트 :
내가 구문 분석에 대한 DOMDocument를 사용하고 있다면 어떻게 구문을 변경해야합니까?
$reader = new DOMDocument();
$reader->load("zip://folder/".$file.".odt#content.xml");
while ($reader->read()){
if ($reader->nodeType == XMLREADER::ELEMENT && $reader->name === 'text:h') {
if ($reader->getAttribute('text:outline-level')=="2") $html .= '<h2>'.$reader->expand()->textContent.'</h2>';
}
elseif ($reader->nodeType == XMLREADER::ELEMENT && $reader->name === 'text:p') {
if ($reader->getAttribute('text:style-name')=="Standard") {
$str = $reader->readInnerXML();
// replace text:s-elements with " " at this point
}
}
}
'$ string = str_replace (" ", ""$ string); 또는 $ string = str_replace (" ", "\ n", $ string); ' –
' textContent'는 다른 태그가없는 문자열로 연결됩니다. 따라서 텍스트 : s- 태그는 if 절에서 이미 제거되었습니다. 그게 내 문제 야. – user3142695
그런 다음'echo utf8_decode ($ reader-> expand() -> textContent)를 시도해보십시오. ""; "또는'echo utf8_decode ($ reader-> expand() -> textContent). "\ n"; - 또는'. ""닫는 괄호 안쪽에. –