需要剥离字符并创建字符串


Need to strip characters and create a string

我正在为动态数据创建一个前端布局,我无法访问源。每篇文章都包含一个可以被视为标签的部分。

每个标签可以是一个或两个单词,每篇文章可以有多达三个标签。

它输出的代码如下:

<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):' ', '&nbsp;', $line):$line;
}

转换数组中以空格分隔的数据。现在您已经在数组中解析了数据,您可以根据需要进行操作

查阅资料