麻烦修改下php 正则提取指定DIV内容,我代码有小小问题

目前就是用php提取hintBox区域中的<a>标签内的文字,有个别页面也有不在div区域的<tr><td><a>等标签,目前我使用的正则是,一旦其他区域有<tr><td... 目前就是用php提取hintBox区域中的<a>标签内的文字,有个别页面也有不在div区域的<tr><td><a>等标签,目前我使用的正则是,一旦其他区域有<tr><td><a>就会提取错误
<?
$html = ""
$listNumberStr = "/<td><a.*?>.*?<\/a><\/td>/ism";
preg_match_all($listNumberStr, $content, $list);
$my_array = array($list);
shuffle($my_array);
print_r($my_array);
?>

html代码:
<div class="hintBox" > <table id="hint_container" class="hint"><caption>正则测试</caption><tr><td><a href="?url_123123" id="99999_1">内容1</a></td> <td><a href="?url_123123" id="99999_2">内容2</a></td> <td><a href="?url_123123" id="99999_3">内容3</a></td> <td><a href="?url_123123" id="99999_4">内容4</a></td> <td><a href="?url_123123" id="99999_5">内容5</a></td> </tr><tr><td><a href="?url_123123" id="99999_6">内容6</a></td> <td><a href="?url_123123" id="99999_7">内容7</a></td> <td><a href="?url_123123" id="99999_8">内容8</a></td> <td><a href="?url_123123" id="99999_9">内容9</a></td> <td><a href="?url_123123" id="99999_10">内容10</a></td> </tr><tr><td><a href="?url_123123" id="99999_11">内容11</a></td> <td><a href="?url_123123" id="99999_12">内容12</a></td> <td><a href="?url_123123" id="99999_13">内容13</a></td> <td><a href="?url_123123" id="99999_14">内容14</a></td> <td><a href="?url_123123" id="99999_15">内容15</a></td> </tr></table></div>
展开
 我来答
dispose
2016-06-17 · TA获得超过642个赞
知道小有建树答主
回答量:458
采纳率:0%
帮助的人:492万
展开全部

分两步, 先提取hintBox区域内容,再提取a标签。

<?php
$html = '
其他区域
<div class="other" > <table id="hint_container" class="hint"><caption>正则测试</caption><tr><td><a href="?url_123123" id="99999_1">内容1</a></td> <td><a href="?url_123123" id="99999_2">内容2</a></td> </tr></table></div>
目标区域
<div class="hintBox" > <table id="hint_container" class="hint"><caption>正则测试</caption><tr><td><a href="?url_123123" id="99999_1">内容1</a></td> <td><a href="?url_123123" id="99999_2">内容2</a></td> <td><a href="?url_123123" id="99999_3">内容3</a></td> <td><a href="?url_123123" id="99999_4">内容4</a></td> <td><a href="?url_123123" id="99999_5">内容5</a></td> </tr><tr><td><a href="?url_123123" id="99999_6">内容6</a></td> <td><a href="?url_123123" id="99999_7">内容7</a></td> <td><a href="?url_123123" id="99999_8">内容8</a></td> <td><a href="?url_123123" id="99999_9">内容9</a></td> <td><a href="?url_123123" id="99999_10">内容10</a></td> </tr><tr><td><a href="?url_123123" id="99999_11">内容11</a></td> <td><a href="?url_123123" id="99999_12">内容12</a></td> <td><a href="?url_123123" id="99999_13">内容13</a></td> <td><a href="?url_123123" id="99999_14">内容14</a></td> <td><a href="?url_123123" id="99999_15">内容15</a></td> </tr></table></div>';

//先提取hintBox区域
preg_match_all('/<div\s*class="hintBox"\s*>.*?<\/div>/is', $html, $contents);
$html = $contents[0][0];


$listNumberStr = "/<td><a.*?>.*?<\/a><\/td>/ism";
preg_match_all($listNumberStr, $html, $list);
$my_array = array($list);
shuffle($my_array);
print_r($my_array);
追问
下面的随机排序代码是不是有问题?为什么我测试都是从1-15正序的排序呢?
还有怎么写随机只显示5个或者7个??
$my_array = array($list);
shuffle($my_array);
print_r($my_array);
追答
shuffle多维数组无效,那你应该这样:
$my_array = $list[0];
shuffle($my_array);
print_r($my_array);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式