所以我有这个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>';
我想在标签<td>
data-date
属性中获取日期,该属性没有属性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);
但是我使用的正则表达式仍然与具有属性class="green"
的标签<td>
匹配。 既然我想排除主题,正确的正则表达式是什么?
需要您的建议,感谢您的帮助。
<td[^>]*data-date="[^"]*"(?:(?!class="green"|>).)*>(.*?)<'/td>
试试这个。请参阅演示。
https://regex101.com/r/dU7oN5/9
我试试这个:
/<td[^>]*data-date="([0-9'/]+)">(.*?)<'/td>/s
看起来它完成了这项工作,使用 https://fr.functions-online.com/preg_match_all.html 测试您的正则表达式;)
对不起我的英语