Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: несоответствие шаблону
Форумы портала PHP.SU » PHP » Регулярные выражения » несоответствие шаблону

Страниц (1): [1]
 

1. kir55rus - 10 Февраля, 2012 - 15:55:23 - перейти к сообщению
Здравствуйте. Существует диапазон [^abc] (как пример), как его можно модифицировать, чтобы он искал несоответствие целого слова?
т.е. в тексте
CODE (htmlphp):
скопировать код в буфер обмена
  1. слон тигр лось лев кенгуру

необходимо вытащить все слова, кроме лося.
Пробовал сделать так: #[^лось]#iU но в таком случае поиск не будет учитывать буквы Л О С Ь, поэтому в результат не смогут попасть такие слова, как лев или слон

Помогите найти правильное решение, буду благодарен
2. LIME - 10 Февраля, 2012 - 16:02:27 - перейти к сообщению
зависит от того хотите вы вырезать слово или обнаружить его вхождение
не надо использовать отрицание в шаблоне
делайте это в логике программы
дайте код
3. kir55rus - 10 Февраля, 2012 - 16:25:55 - перейти к сообщению
на самом деле мне требуется удалить все ссылки, кроме одной. для этого я хочу сделать рег. выражение. Если ссылка будет соответствовать этому шаблону (т.е. не будет равна ссылке, которую необходимо оставить), то заменяем эту ссылку на пустоту.
Если ссылка равна шаблону(т.е. эту ссылку необходимо оставить), то ничего с ней не делаем
4. LIME - 10 Февраля, 2012 - 16:35:12 - перейти к сообщению
чет не соображу но вот на вскидку примерчик
5. kir55rus - 10 Февраля, 2012 - 17:20:02 - перейти к сообщению
эта функция имеет смысл? мы заменям ссылку на саму себя.
плюс мне требуется другой результат, наоборот, ссылку, которую я укажу, заменять не требуется.
Требуется заменить все ссылки кроме той, которую я напишу
6. Okula - 10 Февраля, 2012 - 17:23:58 - перейти к сообщению
Так ты напиши критерии по которым нужно составить регулярное выражение.
Что изменяется в ссылках если они динамичны. Экстрасенсов тут пока нет.
7. kir55rus - 10 Февраля, 2012 - 18:02:32 - перейти к сообщению
должна быть функция:
PHP:
скопировать код в буфер обмена
  1. function myFun($text,$url=false)
  2.  {
  3.       if($url) //если передали url, тогда удаляем все ссылки в тексте, кроме переданной
  4.      {
  5.  
  6.         $url = str_replace('.', '\.', $url); //экранируем точку
  7.         $text = preg_replace('ШАБЛОН ДЛЯ ЗАМЕНЫ', 'НА ЧТО ЗАМЕНЯЕМ', $text);
  8.  
  9.      }else{  //если url не передали, то удаляем все ссылки
  10.  
  11.         $text = preg_replace('#<a.+>(.+)</a>#iUs', $1, $text);
  12.  
  13.      }
  14.         return $text; //отправляем полученный текст
  15.  
  16.  }


текст для обработки:

CODE (htmlphp):
скопировать код в буфер обмена
  1. текст.... <a href="http://site1.ru">анкор</a> текст.... <a href="http://www.site2.com/">анкор2</a> текст... <a href="http://site3.com/">анкор3</a> текст... и тд.



Вызываю функцию:
PHP:
скопировать код в буфер обмена
  1. $text = 'текст.... <a href="http://site1.ru">анкор</a> текст.... <a href="http://www.site2.com/">анкор2</a> текст... <a href="http://site3.com/">анкор3</a> текст... и тд.';
  2. $url = 'http://site1.ru';  //эту ссылку нужно оставить
  3.  
  4. echo myFun($text, $url);  
  5. /*
  6. должен получиться текст:
  7. текст.... <a href="http://site1.ru">анкор</a> текст.... анкор2 текст... анкор3 текст... и тд.
  8. */



Мне необходимо составить регулярное выражение для случая, когда передают ссылку
8. LIME - 10 Февраля, 2012 - 20:08:21 - перейти к сообщению
#[^(лось)]#iU

 

Powered by ExBB FM 1.0 RC1