所以我有这个html表:
$table = '<table cellpadding="0" cellspacing="0" class="calendar">
<tr>
<th>Sun</th>
<th>Mon</th>
<th>Tue</th>
<th>Wed</th>
<th>Thu</th>
<th>Fri</th>
<th>Sat</th>
</tr>
<tr>
<td> </td>
<td data-date="12/01/2014">
<div class="wrapper">
<div class="day">1</div>
</div>
</td>
<td data-date="12/02/2014">
<div class="wrapper">
<div class="day">2</div>
</div>
</td>
<td data-date="12/03/2014">
<div class="wrapper">
<div class="day">3</div>
</div>
</td>
<td data-date="12/04/2014" class="green">
<div class="wrapper">
<div class="day">4</div>
</div>
</td>
<td data-date="12/05/2014" class="green">
<div class="wrapper">
<div class="day">5</div>
</div>
</td>
<td data-date="12/06/2014" class="green">
<div class="wrapper">
<div class="day">6</div>
</div>
</td>
</tr>
<tr>
<td data-date="12/07/2014" class="green">
<div class="wrapper">
<div class="day">7</div>
</div>
</td>
<td data-date="12/08/2014" class="green">
<div class="wrapper">
<div class="day">8</div>
</div>
</td>
<td data-date="12/09/2014" class="green">
<div class="wrapper">
<div class="day">9</div>
</div>
</td>
<td data-date="12/10/2014" class="green">
<div class="wrapper">
<div class="day">10</div>
</div>
</td>
<td data-date="12/11/2014" class="green">
<div class="wrapper">
<div class="day">11</div>
</div>
</td>
<td data-date="12/12/2014">
<div class="wrapper">
<div class="day">12</div>
</div>
</td>
<td data-date="12/13/2014">
<div class="wrapper">
<div class="day">13</div>
</div>
</td>
</tr>
</table>';
我想在标记为data-date
的{{1}}属性中找到没有属性<td>
的日期。预期的有效结果是:
class="green"
(他们没有财产12/01/2014
12/02/2014
12/03/2014
12/12/2014
12/13/2014
)
这是我的代码:
class="green"
然而,我使用的正则表达式仍与具有属性preg_match_all('/<td[^>]*data-date="(.*?)">(.*?)<\/td>/', $table, $tag, PREG_PATTERN_ORDER);
print_r($tag);
的标记<td>
匹配。既然我想排除主题,那么正确的正则表达式是什么?
需要你的建议,谢谢你的帮助。
答案 0 :(得分:1)
<td[^>]*data-date="[^"]*"(?:(?!class="green"|>).)*>(.*?)<\/td>
试试这个。看看演示。
答案 1 :(得分:0)
我试试这个:
/<td[^>]*data-date="([0-9\/]+)">(.*?)<\/td>/s
看起来它完成了这项工作, 使用https://fr.functions-online.com/preg_match_all.html测试正则表达式;)
对不起我的英文