需要删除字符并创建字符串

时间:2015-09-08 08:41:21

标签: php regex

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

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

它输出的代码如下所示:

<div>

            Financial services          Guides      
</div>

如果您感到好奇,标签基本上是未使用标签的占位符。

我需要将这些标签用作动态过滤器,这将使用数据属性实现。

我希望的目标是去除div和额外的标签/空格,并使用这样的标签:

<figure data-groups='["Financial services", "Guides"]'>
  /// DATA 
</figure>

我一直在尝试使用各种trim或preg_replace函数而没有任何成功。

3 个答案:

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

第三个转换数组中的空格分隔数据。现在您已经根据需要解析了数组中的数据

for reference check