我有一个字符串,其数据如下:
<div style="float: right;"><span class='abcd'> test data here </sapn></div>
我希望输出为:
<div style="float: right;"><span class='abcd'>test data here</sapn></div>
到目前为止,我所尝试的就像在regex php中一样,
preg_replace('/\s+/', '', $data);
preg_replace('/[\n\r]+/', '', $data);
但它没有给我预期的结果
答案 0 :(得分:0)
试试这个
$data = preg_replace('/\s{2,}/', '', $data);
答案 1 :(得分:0)
答案 2 :(得分:0)
你做得对。但preg_replace
不会修改参数。而是返回修改后的字符串
所以你可以写点像
$data = preg_replace('/\s+/', ' ', $data);
将$data
作为
<div style="float: right;"><span class='abcd'>test data here</sapn></div>
注意强>
您必须使用空格' '
替换以保留单个空格
答案 3 :(得分:0)
您可以尝试下面的内容。
preg_replace('~(?<=<)[^<>]*(?=>)(*SKIP)(*F)|(?:(?<=>)\h+|\h+(?=<))~', '', $data);
\h+
匹配一个或多个水平空格。
答案 4 :(得分:0)
使用DOMDocument:
$html = '<div style="float: right;"><span class="abcd"> test data here </span></div>';
$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NODEFDTD|LIBXML_HTML_NOIMPLIED);
$xpath = new DOMXPath($dom);
$textNodeList = $xpath->query('//text()');
foreach ($textNodeList as $textNode) {
$textNode->nodeValue = trim($textNode->nodeValue);
}
$html = $dom->saveHTML();