从html代码中提取一些信息

时间:2016-07-13 13:53:13

标签: php strip-tags

我想从html代码中提取信息。以下是其中的一部分:

<li class="letter">#</li>
<li><a href="/fr/707/mot1/1.html" title="mot2">mot2</a><span>1234</span></li>      
<li><a href="/fr/1042/mot3/1.html" title="mot4">mot4</a><span>4567</span></li>
<li><a href="/fr/5697/mot5/1.html" title="mot6">mot6</a><span>3254</span></li>etc...

要获得此结果:

mot1,mot2
mot3,mot4
mot5,mot6
etc...

我尝试使用strip_tags,但这并没有让我走得太远......

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用preg_splitpreg_matcharrayforeach循环的混合来获得您想要的内容。在这种情况下;您可以将所有词汇捆绑到array,如下所示:

<?php    
    $strMots    = '<li class="letter">#</li>
    <li><a href="/fr/707/mot/1.html" title="mot2">mot2</a><span>1234</span></li>
    <li><a href="/fr/707/mot1/1.html" title="mot2">mot2</a><span>1234</span></li>
    <li><a href="/fr/1042/mot3/1.html" title="mot4">mot4</a><span>4567</span></li>
    <li><a href="/fr/5697/mot5/1.html" title="mot6">mot6</a><span>3254</span></li>';

    // SPLIT THE STRING $strMots AT THE BOUNDARY "</li>"
    $arrSplits  = preg_split("#<\/li>#", $strMots);

    // CREATE AN ARRAY TO HOLD YOUR mot STRINGS
    $arrMots    = array();

    // USING FOREACH LOOP; ITERATE THROUGH ALL THE $arrSplits
    // WHILE YOU ARE AT IT, JUST CHECK IF EACH RECORD IN THE LOOP MATCHES 
    // A PATTERN THAT HAS THE WORD mot IN IT AND IF IT DOES,
    // PUSH IT TO AN ARRAY...
    foreach($arrSplits as $split){
        if(preg_match_all("#mot[0-9]+#si", $split, $matches)){
            if(!empty($matches)){
                foreach($matches as $match){
                    if(is_array($match)){
                        foreach($match as $motVal){
                            if(!in_array($motVal, $arrMots)){
                                $arrMots[]  = $motVal;
                            }
                        }
                    }
                }
            }
        }
    }
    var_dump($arrMots);

    // DISPLAYS:
    array (size=4)
      0 => string 'mot2' (length=4)
      1 => string 'mot1' (length=4)
      2 => string 'mot3' (length=4)
      3 => string 'mot4' (length=4)
      4 => string 'mot5' (length=4)
      5 => string 'mot6' (length=4)

注意:请注意(从上面的var_dump()确认,此处使用的Regular Expression仅与 mot 不匹配。即: 没有数字后缀 ,例如 mot9

测试HERE

希望这可以为你提供一些关于如何自己即兴创作的想法。

祝你好运干杯; - )