我正在为动态数据创建前端布局,我无法访问源代码。每篇文章都包含一个可以被视为标签的部分。
每个标签可以是一个或两个单词,每篇文章可以有多达三个标签。
它输出的代码如下所示:
<div>
Financial services Guides
</div>
如果您感到好奇,标签基本上是未使用标签的占位符。
我需要将这些标签用作动态过滤器,这将使用数据属性实现。
我希望的目标是去除div和额外的标签/空格,并使用这样的标签:
<figure data-groups='["Financial services", "Guides"]'>
/// DATA
</figure>
我一直在尝试使用各种trim或preg_replace函数而没有任何成功。
答案 0 :(得分:1)
试试这个
$data = "<div>
Financial services Guides
</div>";
$data = str_replace(" ",",",$data);
$dom = new DOMDocument;
$dom->loadHTML($data);
$xpath = new DomXpath($dom);
$abc = (string)$dom->getElementsByTagName('div')[0]->nodeValue;
$abc = trim(preg_replace('/\s\s+/', ' ', $abc));
echo ltrim($abc,',');
答案 1 :(得分:1)
尝试使用DOMDocument
作为
$html = "<html><head></head><body><div>
Financial services Guides
</div></body></html>";
$dom = new DOMDocument();
$dom->loadHTML($html);
$root = $dom->documentElement;
$getDiv = $root->getElementsByTagName('div');
foreach($getDiv as $val){
$res = preg_replace('/(\h){2,}/',',',$val->nodeValue);
$result[] = array_filter(array_map('trim',explode(',',$res)));
}
print_r($result);
答案 2 :(得分:0)
首先转换解析每个div的数据 秒在解析数据中使用代码将标签转换为空格
function tab2space($line, $tab = 4, $nbsp = FALSE) {
while (($t = mb_strpos($line,"\t")) !== FALSE) {
$preTab = $t?mb_substr($line, 0, $t):'';
$line = $preTab . str_repeat($nbsp?chr(7):' ', $tab-(mb_strlen($preTab)%$tab)) . mb_substr($line, $t+1);
}
return $nbsp?str_replace($nbsp?chr(7):' ', ' ', $line):$line;
}
第三个转换数组中的空格分隔数据。现在您已经根据需要解析了数组中的数据