Ругулярка подскажите

Xover

Новичок
Ругулярка подскажите

Подскажите плиз.

есть регулярное выражение по выдиранию ссылок со страницы

$re='~<a href="(.*?)">(.*?)</a>~i';

Как сделать, чтобы текст ссылки (во втором кармане), попадал только текст НЕ НАЧИНАЮЩИЙСЯ на R.

то есть
<a href="http://xxx.com">Текст</a> - подходит
<a href="http://xxx.com">Ringo Star</a> - не подходит.


//пробовал так
$re='~<a href="(.*?)">[^R](.*?)</a>~i' но тогда первый символ текста куда-то девается.


спасиюо
 

zerkms

TDD infected
Команда форума
почитай про утверждения в мануале

подсказка: (?<!R)
 

WP

^_^
А нафиг запаздывающая проверка? Она всегда выполняется т.к. '>' != 'R'. Надо (?!R)
 

WP

^_^
$re='~<a href="(.*?)">(?!R)(.*?)</a>~i';
p.s. убогое какое выражение у тебя, Xover
 

WP

^_^
> почему убогое?
<a target="_blank" href=/> - как твое отреагирует на такой тег?
> а как ты сам написал бы?
PHP:
<plaintext><?php
$pattern = '~<a.+?href\s*=(?:([\'"])(.*?)\1|\s*([^\s>]*)).*?>(.*?)(?:</a>|(?=<a))~si';
$body = file_get_contents('http://phpclub.ru');
preg_match_all($pattern,$body,$matches,PREG_SET_ORDER);
$links = array();
foreach ($matches as $k=>$v)
{
 ///$v[4] = strip_tags($v[4]);
 $links[] = array(strlen($v[3])?$v[3]:$v[2],$v[4]);
}
//var_dump($matches);
var_dump($links);
?></plaintext>
 
Сверху