Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: найти в ссылке class
 
 автор: dirol   (31.01.2011 в 10:25)   письмо автору
 
 

подскажите пожалуйста как в регулярке найти в ссылке 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 чтобы ссылка не обрабатывалась этим кодом?
подскажите пожалуйста.

  Ответить  
 
 автор: cheops   (31.01.2011 в 10:29)   письмо автору
 
   для: dirol   (31.01.2011 в 10:25)
 

Хорошо бы примерчик текста с ссылками... Положение класса всегда определено или он может оказаться где угодно (до href, после href)?

  Ответить  
 
 автор: dirol   (31.01.2011 в 10:41)   письмо автору
 
   для: 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 но это не правильно получится.

  Ответить  
 
 автор: cheops   (31.01.2011 в 10:57)   письмо автору
 
   для: dirol   (31.01.2011 в 10:41)
 

Собственно у вас все-равно уже цикл по результату имеется, может просто искать в $matches[0][$i] подстроку class="sape" и пропускать текущую итерацию цикла при помощи continue?

  Ответить  
 
 автор: dirol   (31.01.2011 в 14:37)   письмо автору
 
   для: cheops   (31.01.2011 в 10:57)
 

не подскажите примером?

  Ответить  
 
 автор: cheops   (31.01.2011 в 14:42)   письмо автору
 
   для: dirol   (31.01.2011 в 14:37)
 

Сразу после
 for ($i=0;$i<count($matches[0]);$i++){

Поставьте условие
if(strpos($matches[0][$i], 'class="sape"') !== false) continue;

  Ответить  
 
 автор: dirol   (31.01.2011 в 14:52)   письмо автору
 
   для: cheops   (31.01.2011 в 14:42)
 

cheops
Спасибо большое!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования