我正在尝试解析以下代码:
<td class='postac'>Actelsar </td>
<td class='postac'>tabl. 80 mg 28 tabl.</td>
输入应该是“ <td class='postac'> </td>
”标签之间的文本(不带“<”符号),并且以大写字母开头。
正则表达式:/<td class=\'postac\'>^[A-Z]+([^<]*)$<\/td>/s
上面的代码不起作用。谢谢你的帮助。
我正在尝试解析以下代码:
<td class='postac'>Actelsar </td>
<td class='postac'>tabl. 80 mg 28 tabl.</td>
输入应该是“ <td class='postac'> </td>
”标签之间的文本(不带“<”符号),并且以大写字母开头。
正则表达式:/<td class=\'postac\'>^[A-Z]+([^<]*)$<\/td>/s
上面的代码不起作用。谢谢你的帮助。
上面的代码不起作用
这不是因为由于某种原因你在正则表达式的中间放了一个$
和符号(这意味着相应的字符串/行的结尾和开头)^
这应该做你想要的:
/<td class=\'postac\'>([A-Z][^<]*)<\/td>/s
使用 HTML 解析器来解析 HTML 而不是正则表达式。它可以通过 DOMDocument 和 DOMXPath 轻松完成。
$doc = new DOMDocument();
$doc->loadHTML($str);
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//td[@class="postac"]');
$result = array();
for($i=0;$i<$nodes->length; $i++){
$text = $nodes->item($i)->textContent;
if(isset($text[0])&&ctype_upper($text[0])) $result[]= $text;
}
请参阅实际代码。
/<td class=\'postac\'>([A-Z]+.*)<\/td>/
将匹配Actelsar
,但不匹配。80 毫克片剂。