首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

正则匹配有关问题 求指教

2012-06-10 
正则匹配问题 求指教获取一个A标签的Href属性被匹配的字符div classa herfhttp://www.baidu.com/ i

正则匹配问题 求指教
获取一个A标签的Href属性

被匹配的字符

<div class="a" herf="http://www.baidu.com/" id="a1">连接1</a>
<div class="a" herf='http://www.baidu.com/' id="a2">连接2</a>
<div class="a" herf=http://www.baidu.com/ id="a3">连接3</a>


可以没有引号 可以有双引号 单引号 但是不允许一侧有引号另一侧没有引号

PHP code
preg_match('/<a([\s\S]*)href=(["\']?)([\s\S]*)\1\sid([\s\S]*)</a>/i', $str, $matches)



这样怎么不行呢

[解决办法]
PHP code
$str=<<<STR<a class="a" href="http://www.baidu.com/" id="a1">连接1</a><a class="a" href='http://www.baidu.com/' id="a2">连接2</a><a class="a" href=http://www.baidu.com/ id="a3">连接3</a><a class="a" href="http://www.baidu.com/ id="a3">连接3</a>STR;preg_match_all('/<a[^>]+href=(["\']?)([^\s"\']+)\1[^>]*>/',$str,$matches);print_r($matches[2]);
[解决办法]
PHP code
$str=<<<html<div class="a" href="http://www.baidu.com/" id="a1">连接1</a><div class="a" href='http://www.baidu.com/' id="a2">连接2</a><div class="a" href=http://www.baidu.com/ id="a3">连接3</a>html;preg_match_all('/href=(["\'])?([^\s"\']+)/is', $str, $matches) ;print_r($matches);
[解决办法]
PHP code
[User:root Time:14:14:52 Path:/home/liangdong/php]$ php preg.php Array(    [0] => Array        (            [0] => <div class="a" href="http://www.baidu.com/"            [1] => <div class="a" href='http://www.baidu.com/'            [2] => <div class="a" href=http://www.baidu.com/        )    [1] => Array        (            [0] => "            [1] => '            [2] =>         )    [2] => Array        (            [0] => http://www.baidu.com/            [1] => http://www.baidu.com/            [2] => http://www.baidu.com/        ))[User:root Time:14:14:53 Path:/home/liangdong/php]$ cat preg.php <?php$str = <<<EOF<div class="a" href="http://www.baidu.com/" id="a1">连接1</a><div class="a" href='http://www.baidu.com/' id="a2">连接2</a><div class="a" href=http://www.baidu.com/ id="a3">连接3</a>EOF;preg_match_all('/<div class="a" href=(["\']?)([^\s\'"]*)\1/is', $str, $matches);print_r($matches);?> 

热点排行