我有一个HTML字符串,我想在其纯文本内容上进行一些文本格式化。我的意思是,我想提取任何文本而不包含在标记括号中的内容。但是......我打算使用DOMDocument,但我不知道我正在寻找的标签,也不知道他们的ID。
例如,我可以拥有该字符串
<p><i>some tex<span class="aclass">t</span> in the document.</i>Whoooa <img src="anImage.png" /></p>
我想在重新注入页面中原始标签格式化的整个文本之前格式化“document.Whoooa”字符串中的一些文本。例如,在点之后放置一个空格并删除结束空格。
我该怎么做?
答案 0 :(得分:2)
如果可能的话,客户端使用jQuery更容易,它专门用于简单的dom操作。通常,您将需要使用preg_match和/或xml解析器。我认为有一些dom解析器,但我不记得php中是否包含任何解析器。
答案 1 :(得分:1)
我已经开始创建一个名为TextRange
的类,它为文本节点提供了一个简单的界面,作为某个DOMDocument
部分的单个字符串表示。
您需要找出需要更改字符串的位置,然后TextRange
类可以根据需要拆分节点。我在以下两个问题中对它进行了冗长的解释:
第一个类还包含一个非常原始的TextRangeTrimmer
类,它可以删除此类TextRange
开头和结尾的空格。
由于您只修改文本节点值,因此始终会保留原始标记。您可能需要根据自己的使用情况自行清理未使用的(空)标记。
它基于DOMDocument
工作并接受父DOMElement
(范围将是所有textnode子项),xpath查询结果(DOMNodeList
)或仅接受textnode元素数组。
答案 2 :(得分:0)
使用strip_tags!
$str = '<p><i>some tex<span class="aclass">t</span> in the document.</i>Whoooa <img src="anImage.png" /></p>';
echo strip_tags( $str);
这将输出:
string(33) "some text in the document.Whoooa "
然后,对于你的其余问题:
// Put a space after the point
$str = preg_replace( '/\.([^ ])/', '. $1', $str);
// and deleting the ending space.
$str = rtrim( $str, ' ');