我有一个正则表达式,它是返回 html 标记内的任何内容,并带有id="test"
前任:
<span id="test">Hello World</span>
<.*?id="pStyle".*?>(.*?)</.*?>
它返回你好世界
如果一个标签是空的,它应该返回太像
<span id="test"></span>
如果标记为空,它应返回默认值。我目前是正则表达式的新手,是否有任何正则表达式可以派生此空标签?
我假设你使用preg_match
函数。当存在匹配项时,它将始终返回一个字符串。如果您想在标签为空时返回 null,我认为您应该添加一个if
语句,例如
$string = '<span id="test">Hello World</span>';
$matches = array();
if (preg_match('%<.*?id="pStyle".*?>(.*?)</.*?>%', $string, $matches) {
if (empty($matches[1])) {
return null;
}
return $matches[1];
}
另外,我建议不要使用此结构:.*?
。如果我写这个正则表达式,我会这样做:
<[^>]*id="pStyle"[^>]*>([^<]*)</[^>]*>
[^>]*
表示:除>
以外的零个或多个字符。
也许在任何符号之后 <.*?id="pStyle".*?>(.*?)</.*?>
您应该添加多个符号
<(.*)id="pStyle"(.*)>(.*)<'/ (.*)>
对我来说,它工作得很好