有人可以帮助我使用正则表达式模式,我可以用来匹配链接元素中的文本“Cats”吗?
<A HREF="http://www.catingale2?subject=10023">Cats</A> forum
提前致谢!
答案 0 :(得分:3)
这样的事情:
$str = '<A HREF="http://www.catingale2?subject=10023">Cats</A> forum';
$matches = array();
if (preg_match('#<a[^>]*>(.*?)</a>#i', $str, $matches)) {
var_dump($matches[1]);
}
给出了:
string(4) "Cats"
并且,作为旁注:一般来说,使用正则表达式“解析”HTML并不是一个好主意!
答案 1 :(得分:2)
不需要正则表达式
$str=<<<EOF
<A HREF="http://www.catingale2?subject=10023">Cats</A> forum
<A HREF="http://www.catingale2?subject=10024">
Dogs</A>
forum
EOF;
$s = explode("</A>",$str);
foreach($s as $v){
if (strpos($v,"<A HREF")!==FALSE){
$t=explode(">",$v);
print end($t)."\n";
}
}
输出
# php test.php
Cats
Dogs
答案 2 :(得分:2)
<a[^>]*>([^<]*)<\/a>
就是这样。你可能会逃脱:
<a[^>]*>(.*)<\/a>
或
<a[^>]*>([^<]*)
答案 3 :(得分:1)
$input = '<A HREF="http://www.catingale2?subject=10023">Cats</A> forum';
if(preg_match('{<a.*?>(.*?)</a>}i',$input,$matches)) {
$hyperlinked = $matches[1];
}
echo $hyperlinked; // print Cats
使用的正则表达式是:<a.*?>(.*?)</a>
说明:
<a.*?> - an opening anchor tag with any attribute.
(.*?) - match and remember between opening anchor tag and closing anchor tag.
</a> - closing anchor tag.
i - to make the entire matching case insensitive