帮助正则表达式模式

时间:2010-03-06 21:41:38

标签: php regex

有人可以帮助我使用正则表达式模式,我可以用来匹配链接元素中的文本“Cats”吗?

<A HREF="http://www.catingale2?subject=10023">Cats</A> forum

提前致谢!

4 个答案:

答案 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