php正则匹配多处内容 50
第一个问题:如何精确结束标签如:<divclass="a">XXXXXXXX<divclass="b">内容</div>XXXXXXX</div>匹配<divclass=...
第一个问题:如何精确结束标签如:
<div class="a">XXXXXXXX
<div class="b">内容</div>XXXXXXX</div>
匹配<div class="b">内容</div>
第二个问题:不同的文章内容不在同一标签下,如何匹配
我写两次内容匹配时,就不行了.
<div class="b">内容</div>
<div class="c">内容</div>
preg_match('/<div class="b">(.*)<\/div>/is',$list,$arr);
preg_match('/<div class="c">(.*)<\/div>/is',$list,$arr);
这样写不行
如何进行判断当
<div class="b">内容</div>里的内容不存在时,匹配
<div class="c">内容</div>里的内容 展开
<div class="a">XXXXXXXX
<div class="b">内容</div>XXXXXXX</div>
匹配<div class="b">内容</div>
第二个问题:不同的文章内容不在同一标签下,如何匹配
我写两次内容匹配时,就不行了.
<div class="b">内容</div>
<div class="c">内容</div>
preg_match('/<div class="b">(.*)<\/div>/is',$list,$arr);
preg_match('/<div class="c">(.*)<\/div>/is',$list,$arr);
这样写不行
如何进行判断当
<div class="b">内容</div>里的内容不存在时,匹配
<div class="c">内容</div>里的内容 展开
展开全部
第一个问题:
preg_match("/<div.*?>((?:(?!<div).)+?)<\/div>/", $content, $match);
echo $match[1];
第二个问题,LZ是不是想匹配出b、c中先出现的一处中的内容?这样的话:
$content = '
<div class="b">内容</div>
<div class="c">内容</div>';
preg_match("/<div\sclass=\"[bc]\">(.+?)<\/div>/", $content, $match);
echo $match[1];
preg_match("/<div.*?>((?:(?!<div).)+?)<\/div>/", $content, $match);
echo $match[1];
第二个问题,LZ是不是想匹配出b、c中先出现的一处中的内容?这样的话:
$content = '
<div class="b">内容</div>
<div class="c">内容</div>';
preg_match("/<div\sclass=\"[bc]\">(.+?)<\/div>/", $content, $match);
echo $match[1];
追问
preg_match('/\(.*) /isU',$arr,$body);
preg_match("/g_oBlogContent = '(.*)'/isU",$arr,$body);
实际中是这样的,一个是HTML里的内容,一个是JSON里的内容,
这样如何匹配,
@preg_match("/(.+?)/",$content, $match) or (preg_match("/g_oBlogContent = '(.*)'/",$content,$match));
这样写是对的吗?
追答
改用非贪婪啊不就行了? 大哥不是就那么简单吧
/(.*?) /isU
/g_oBlogContent = '(.*?)'/isU
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<div class="[a-z]+">.+?</div> 两个问题都能用这个 具体的加\ 你自己加吧
第一个因为你要匹配b的内容,特征是只有b类时有完整的<div></div> 结构
第二个的话 因为你B里不存在内容所以<div class="[a-z]+">.+?</div> 里面的+就保证了必须要有一个
.+? 用非贪婪模式保证只匹配到最小的一个<div></div>
第二个用match_all 那个函数匹配
第一个因为你要匹配b的内容,特征是只有b类时有完整的<div></div> 结构
第二个的话 因为你B里不存在内容所以<div class="[a-z]+">.+?</div> 里面的+就保证了必须要有一个
.+? 用非贪婪模式保证只匹配到最小的一个<div></div>
第二个用match_all 那个函数匹配
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
preg_match_all("/<div\sclass=\"([^\"]*)\">([^<]*)<\/div>([^<]*)<\/div>/",$list_html,$p);
$p[1][$i] = class
$p[2][$i]=内容
$p[3][$i]=xxxxxxx
$p[1][$i] = class
$p[2][$i]=内容
$p[3][$i]=xxxxxxx
追问
第一个精确匹配内容结束的没解决
第二个两处内容
内容
内容
preg_match('/(.*)/is',$list,$arr);
preg_match('/(.*)/is',$list,$arr);
这样写不行
如何进行判断当
内容里的内容不存在时,匹配
内容里的内容
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询