我想从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,但这并没有让我走得太远......
感谢您的帮助。
答案 0 :(得分:0)
您可以尝试使用preg_split
,preg_match
,array
和foreach
循环的混合来获得您想要的内容。在这种情况下;您可以将所有词汇捆绑到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。
希望这可以为你提供一些关于如何自己即兴创作的想法。
祝你好运干杯; - )