|
|
|
| подскажите пожалуйста как в регулярке найти в ссылке class?
есть ссылки на сайте которые преобразовываются в index go и номер типа в нутреней
preg_match_all("#<a(\s+)href=('|\")http://([^\"']+)('|\")([^>]*)>#i", $contents, $matches);
for ($i=0;$i<count($matches[0]);$i++){
$host = explode('/', $matches[3][$i]);
if ($conf['homeurl'] && $conf['homeurl'] != 'http://'.$host[0]){
if(preg_match("#target=(\"|')index(\"|')#i", $matches[5][$i])==false){
$mt_rand = mt_rand(1000000, 1000000000);
$contents = str_ireplace($matches[0][$i], '<a'.$matches[1][$i].'href='.$matches[2][$i].'/index.php?go='.$mt_rand.$matches[4][$i].' onmouseover="this.href=\'http://'.$matches[3][$i].'\'" onmouseout="this.href=\'/index.php?go='.$mt_rand.'\'"'.$matches[5][$i].'>', $contents);
}
}
}
}
|
но если поставить sape на сайт то естествено оно работать не будет а ссылки все преобразовываются.
как сделать если в ссылке есть класс к примеру class=sape чтобы ссылка не обрабатывалась этим кодом?
подскажите пожалуйста. | |
|
|
|
|
|
|
|
для: dirol
(31.01.2011 в 10:25)
| | Хорошо бы примерчик текста с ссылками... Положение класса всегда определено или он может оказаться где угодно (до href, после href)? | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 10:29)
| | class может оказаться и до и после
вот если вставить ссылку в текст
<a href="'http://www.google.ru/search'" target="_blank" class="sape" title="">сыль</a>
то она преобразуется в такое
<a href="/index.php?go=906690675" onmouseover="this.href='http://www.google.ru/search'" onmouseout="this.href='/index.php?go=906690675'" target="_blank" class="sape" title="http://www.google.ru/search">сыль</a>
а надо если найден класс то чтобы она такой же и осталась.
думал сделать через explode но это не правильно получится. | |
|
|
|
|
|
|
|
для: dirol
(31.01.2011 в 10:41)
| | Собственно у вас все-равно уже цикл по результату имеется, может просто искать в $matches[0][$i] подстроку class="sape" и пропускать текущую итерацию цикла при помощи continue? | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 10:57)
| | не подскажите примером? | |
|
|
|
|
|
|
|
для: dirol
(31.01.2011 в 14:37)
| | Сразу после
for ($i=0;$i<count($matches[0]);$i++){
|
Поставьте условие
if(strpos($matches[0][$i], 'class="sape"') !== false) continue;
|
| |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 14:42)
| | cheops
Спасибо большое! | |
|
|
|