麻烦修改下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> 展开
<?
$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> 展开
1个回答
展开全部
分两步, 先提取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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询