Php 检查html是否包含带有属性的标记
我正在使用regex解析一个HTML页面,因为它的内容不是有效的HTML(opentags等) 我想检查HTML是否包含属性为Php 检查html是否包含带有属性的标记,php,regex,html-parsing,preg-match,Php,Regex,Html Parsing,Preg Match,我正在使用regex解析一个HTML页面,因为它的内容不是有效的HTML(opentags等) 我想检查HTML是否包含属性为data valmsg for=“LoginError”的。 我已经使用DOM尝试过了,但是由于HTML无效,它似乎无法找到标记 我最近尝试的是preg_match(“//I”,$sHtml) 我的正则表达式技能几乎不存在,所以我想知道正确的正则表达式应该是什么 更新: 下面是一个html的示例 [...] <span class="field-validatio
data valmsg for=“LoginError”
的
。
我已经使用DOM尝试过了,但是由于HTML无效,它似乎无法找到标记
我最近尝试的是preg_match(“//I”,$sHtml)代码>
我的正则表达式技能几乎不存在,所以我想知道正确的正则表达式应该是什么
更新:
下面是一个html的示例
[...]
<span class="field-validation-error" data-valmsg-for="LoginError" data-valmsg-replace="true" id="CodeError">Du har gjort många försök inom en kort tid. Försök igen senare</span> <br>
[...]
[…]
杜哈尔科特m&229;nga f&246;246卢比;金门恩科特tid。Fö;246卢比;k伊根塞纳雷
[...]
如果需要检查,请使用此regexp:
$a = "<span></span><span data-valmsg-for=\"LoginError\">test</span><br>";
if (preg_match_all('/<[a-z \'"]*data-valmsg-for/i', $a, $matches)) {
var_dump($matches);
} else {
echo 'fail';
}
$a=“测试
”;
如果(preg_match_all('/),则以下各项应起作用:
var_dump(preg_match_all('~<span\s.*?data-valmsg-for="~i', $html));
如果我理解您的正则表达式,则您正在使用data valmsg for
搜索任何span
。但是,我专门查找data valmsg for=“LoginError”
因为可能还有其他的。但是,我非常想让span的内容来考虑它。我尝试了你的正则表达式,但似乎也不能让它工作。谢谢。我会看看它。DOMDoc不工作,因为整个页面是ISS中的APS.net页面,与MS一样,不遵循html编码标准。验证它时会附带20-30个左右的warnings.pastebin之类的失败html示例
$a = "<span></span><span data-valmsg-for=\"LoginError\">test</span><br>";
if (preg_match_all('/<[a-z \'"]*data-valmsg-for=[\'"]LoginError[\'"][^>]*>([^<]*)/i', $a, $matches)) {
var_dump($matches);
} else {
echo 'fail';
}
var_dump(preg_match_all('~<span\s.*?data-valmsg-for="~i', $html));
$html = <<<HTML
[...]
<span>foo</span>
<span>bar
<span class="field-validation-error" data-valmsg-for="LoginError" data-valmsg-replace="true" id="CodeError">Du har gjort många försök inom en kort tid. Försök igen senare <br>
[...]
HTML;
$dom = new DOMDocument();
@$dom->loadHTML($html);
$spans = $dom->getElementsByTagName('span');
$i = 0;
foreach($spans as $span){
echo ++$i . ' | ' . $span->getAttribute('data-valmsg-for') . '</br>';
}
1 |
2 |
3 | LoginError