<div id="test">some<b>bold</b> or <i>italic</i> text</div>
<div id="test">and again<b> bold text</b><i>and italic text<i></div>
1 : some bold or italic text
2 : and again blod text and italic text
string(//div)
normalize-space(//div)
给出好的格式化答案,但只有一个结果。
id('test')//text()
提供所有文字但分割结果。
我尝试使用字符串连接或连接但没有运气。 我想在php中这样做。
答案 0 :(得分:0)
html中没有很多样式标记,您可以尝试创建自己的函数来擦除不需要的html。类似的东西:
function htmlToText(text) {
return text.replace(/<i>/i, '').replace(/<b>/i, '').replace(/<s>/i, '').replace(/<span>/i, '');
}
答案 1 :(得分:0)
您需要在此处使用正则表达式从HTML标记内部提取文本。如果您对正则表达式不热,此网站会让您烦恼。
http://www.regular-expressions.info/
然后使用preg_replace(http://php.net/preg_replace)使用您构建的模式提取文本。
答案 2 :(得分:0)
试试这个:
$dom = new \DOMDocument();
$dom->loadHTML('<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="test1">some<b>bold</b> or <i>italic</i> text</div>
<div id="test2">and again<b> bold text</b><i>and italic text</i></div>
</body>
</html>');
$xpath = new \DOMXPath($dom);
foreach ( $xpath->query('//div[contains(@id,"test")]') as $node ) {
echo $node->nodeValue , PHP_EOL;
}
输出:
somebold or italic text
and again bold textand italic text
答案 3 :(得分:0)
假设您有此XML文档:
<html>
<div id="test">some<b>bold</b> or <i>italic</i> text</div>
<div id="test">and again<b> bold text</b><i>and italic text</i></div>
</html>
然后使用:
string(/*/div[1])
评估此XPath表达式的结果是:
somebold or italic text
<强>类似地强>:
string(/*/div[2])
评估时产生:
and again bold textand italic text
如果您想要用空格分隔每个文本节点,使用单个XPath 1.0表达式无法实现(可以使用单个XPath 2.0表达式完成)。相反,您需要评估:
/*/div[1]//text()
这选择(在列表或数组结构中,取决于您的编程语言)/*/div[1]
的所有文本节点后代:
“some”“bold”“或”“italic”“text”。
类似地:
/*/div[2]//text()
选择(在列表或数组结构中,取决于您的编程语言)/*/div[2]
的所有文本节点后代:
现在,使用您的编程语言,您必须将它们与中间空间连接起来以产生最终的想要结果。