我正在为动态数据创建一个前端布局,我无法访问源。每篇文章都包含一个可以被视为标签的部分。
每个标签可以是一个或两个单词,每篇文章可以有多达三个标签。
它输出的代码如下:
<div>
Financial services Guides
</div>
如果你好奇的话,这些制表符实际上是未使用标签的占位符。
我需要使用这些标签作为动态过滤器,这将使用数据属性实现。
我期望的目标是去掉div和额外的制表符/空白,并使用这样的标签:
<figure data-groups='["Financial services", "Guides"]'>
/// DATA
</figure>
我一直在尝试使用各种trim或preg_replace函数,但没有任何成功。
试试这个
$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,',');
尝试使用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);
首先转换解析每个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;
}
转换数组中以空格分隔的数据。现在您已经在数组中解析了数据,您可以根据需要进行操作
查阅资料