求高手帮我写个php正则表达式
下面两段代码,一段a标签中有span,一段里面没有,我想保存的内容有12345678910、两处¥后面的内容、以及标注的“此内容需要保存”,这些内容包括href的值都是变...
下面两段代码,一段a标签中有span,一段里面没有,我想保存的内容有12345678910、两处¥后面的内容、以及标注的“此内容需要保存”,这些内容包括href的值都是变化的,求高手帮我写一个正则表达式,要在php中使用的,源代码如下:
第①段:
<div class="numbershow">
<ul>
<li class="number hmzt"><a href="/escrow/622-12345678910.htm" target="_blank">12345678<span class="red">910</span></a></li>
<li class="price"><span class="red">¥5300</span>/¥0</li>
<li class="brand"><i class="brand_icon liantong"></i>几个汉字</li>
<li class="law" style="color:#8d8d8d;">此内容需要保存</li>
<li class="operation"><a class="reserve" href="/escrow/622-12345678910.htm" target="_blank">查看</a></li>
</ul>
</div>
第②段:
<div class="numbershow">
<ul>
<li class="number hmzt"><a href="/escrow/31863-12345678910.htm" target="_blank">12345678910</a></li>
<li class="price"><span class="red">¥5300</span>/¥0</li>
<li class="brand"><i class="brand_icon liantong"></i>几个汉字</li>
<li class="law" style="color:#8d8d8d;">此内容需要保存</li>
<li class="operation"><a class="reserve" href="/escrow/31863-12345678910.htm" target="_blank">查看</a></li>
</ul>
</div>
上面描述有误,应该是:第一段a标签里面里面有span,第二段没有 展开
第①段:
<div class="numbershow">
<ul>
<li class="number hmzt"><a href="/escrow/622-12345678910.htm" target="_blank">12345678<span class="red">910</span></a></li>
<li class="price"><span class="red">¥5300</span>/¥0</li>
<li class="brand"><i class="brand_icon liantong"></i>几个汉字</li>
<li class="law" style="color:#8d8d8d;">此内容需要保存</li>
<li class="operation"><a class="reserve" href="/escrow/622-12345678910.htm" target="_blank">查看</a></li>
</ul>
</div>
第②段:
<div class="numbershow">
<ul>
<li class="number hmzt"><a href="/escrow/31863-12345678910.htm" target="_blank">12345678910</a></li>
<li class="price"><span class="red">¥5300</span>/¥0</li>
<li class="brand"><i class="brand_icon liantong"></i>几个汉字</li>
<li class="law" style="color:#8d8d8d;">此内容需要保存</li>
<li class="operation"><a class="reserve" href="/escrow/31863-12345678910.htm" target="_blank">查看</a></li>
</ul>
</div>
上面描述有误,应该是:第一段a标签里面里面有span,第二段没有 展开
2个回答
展开全部
按照你的要求编写的PHP正则表达式
/<div class="numbershow">.*?<li class="number hmzt".*?><a.*?>(.*?)(?:<span.*?>(.*?)<\/span>)?<\/a>.*?<li class="price".*?><span.*?>¥(.*?)<\/span>\/¥(.*?)<\/li>.*?<li class="law".*?>(.*?)<\/li>/is
完整的PHP程序如下
<?php
$str = '<div class="numbershow">
<ul>
<li class="number hmzt"><a href="/escrow/622-12345678910.htm"
target="_blank">12345678<span class="red">910</span></a></li>
<li class="price"><span class="red">¥5300</span>/¥0</li>
<li class="brand"><i class="brand_icon liantong"></i>几个汉字</li>
<li class="law" style="color:#8d8d8d;">此内容需要保存</li>
<li class="operation"><a class="reserve" href="/escrow/622-12345678910.htm"
target="_blank">查看</a></li>
</ul>
</div>
<div class="numbershow">
<ul>
<li class="number hmzt"><a href="/escrow/31863-12345678910.htm"
target="_blank">12345678910</a></li>
<li class="price"><span class="red">¥5300</span>/¥0</li>
<li class="brand"><i class="brand_icon liantong"></i>几个汉字</li>
<li class="law" style="color:#8d8d8d;">此内容需要保存</li>
<li class="operation"><a class="reserve" href="/escrow/31863-12345678910.htm"
target="_blank">查看</a></li>
</ul>
</div>';
preg_match_all ('/<div class="numbershow">.*?<li class="number hmzt".*?><a.*?>(.*?)(?:<span.*?>(.*?)<\/span>)?<\/a>.*?<li class="price".*?><span.*?>¥(.*?)<\/span>\/¥(.*?)<\/li>.*?<li class="law".*?>(.*?)<\/li>/is', $str, $matches);
for ($i=0; $i<count($matches[0]); $i++) {
echo "number hmzt=".$matches[1][$i].$matches[2][$i]." price=".$matches[3]
[$i]." ".$matches[4][$i]." law=".$matches[5][$i]."\n";
}
?>
运行结果
number hmzt=12345678910 price=5300 0 law=此内容需要保存
number hmzt=12345678910 price=5300 0 law=此内容需要保存
展开全部
解法一:$p = '#index\.php\?c=[^&]+&f=[^&]+((?!&p=).)*#i'; 解法二:使用(?(group)yes|no)这个语法 $p = '#index\.php\?c=[^&]+&f=[^&]+(&p=)?(?(1)|.+)$#i'; //注意后面的$ 更多关于正则内容请参考:《深入正则表达式应用》http://www.zjmainstay.cn/deep-regexp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询