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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: несоответствие шаблону

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
kir55rus
Отправлено: 10 Февраля, 2012 - 15:55:23
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Янв. 2012  
Откуда: Омск, Россия


Помог: 0 раз(а)




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

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

Помогите найти правильное решение, буду благодарен
 
 Top
LIME
Отправлено: 10 Февраля, 2012 - 16:02:27
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




зависит от того хотите вы вырезать слово или обнаружить его вхождение
не надо использовать отрицание в шаблоне
делайте это в логике программы
дайте код
 
 Top
kir55rus
Отправлено: 10 Февраля, 2012 - 16:25:55
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Янв. 2012  
Откуда: Омск, Россия


Помог: 0 раз(а)




на самом деле мне требуется удалить все ссылки, кроме одной. для этого я хочу сделать рег. выражение. Если ссылка будет соответствовать этому шаблону (т.е. не будет равна ссылке, которую необходимо оставить), то заменяем эту ссылку на пустоту.
Если ссылка равна шаблону(т.е. эту ссылку необходимо оставить), то ничего с ней не делаем
 
 Top
LIME
Отправлено: 10 Февраля, 2012 - 16:35:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




чет не соображу но вот на вскидку примерчик

(Отредактировано автором: 10 Февраля, 2012 - 16:35:35)

 
 Top
kir55rus
Отправлено: 10 Февраля, 2012 - 17:20:02
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Янв. 2012  
Откуда: Омск, Россия


Помог: 0 раз(а)




эта функция имеет смысл? мы заменям ссылку на саму себя.
плюс мне требуется другой результат, наоборот, ссылку, которую я укажу, заменять не требуется.
Требуется заменить все ссылки кроме той, которую я напишу
 
 Top
Okula
Отправлено: 10 Февраля, 2012 - 17:23:58
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Так ты напиши критерии по которым нужно составить регулярное выражение.
Что изменяется в ссылках если они динамичны. Экстрасенсов тут пока нет.
 
 Top
kir55rus
Отправлено: 10 Февраля, 2012 - 18:02:32
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Янв. 2012  
Откуда: Омск, Россия


Помог: 0 раз(а)




должна быть функция:
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. */



Мне необходимо составить регулярное выражение для случая, когда передают ссылку

(Отредактировано автором: 10 Февраля, 2012 - 18:04:14)

 
 Top
LIME
Отправлено: 10 Февраля, 2012 - 20:08:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




#[^(лось)]#iU
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB