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

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

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

 

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

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

тема: Поиск вхождения
 
 автор: Ressfourt   (25.11.2005 в 14:02)   письмо автору
 
 

Народ сразу скажу что с регулярными выражениям вообще еще не дружу поэтому сильно не ругайтесь,

помогите с такой задачей

человек пишет текст вставляет сылки на картинки смайлы и тд все это делеается в FCKeditor

задача в чем... когда человек постит идет проверка на вхождение есть ли теги <img
если есть то проверить если это рисунки из определенныой папки скажем моего сервера + с определенным наименованием рисунка то result true если за пределами моего сайта то он должен вытащить сылку на изображение (дальше как вывести изображение на лету я знаю) вот помогите составить этот рег.

и еще скажите как сделать чтоб вот если в конфиге у меня прописано на запрет вставки изображений а человек перетащил обьект или рисунок в окошко редактора он его добавляет... ну вот задача в чем тоже найти если тег <img посмотреть какое имя у файла и если это рисунок(смайл) то добро пусть добавляет а если нет то чтоб он вырезал весь тег img

кхм я надеюсь смог сказать что я хочу.. .сорри ребята с русским у меня завал

   
 
 автор: Ressfourt   (25.11.2005 в 15:54)   письмо автору
 
   для: Ressfourt   (25.11.2005 в 14:02)
 

ну народ помогите плиззз

   
 
 автор: cheops   (25.11.2005 в 18:20)   письмо автору
 
   для: Ressfourt   (25.11.2005 в 14:02)
 

Давайте подробнее... какой текст идёт в базу данных (файл)? С тэгом <img src=>? Тогда приведите пожалуйста кусок кода с несколькими тэгами... регулярные выражения вещь достаточно плотная и сильно зависит от конкретного текста, чтобы у вас всё воспроизводилось нужен ваш текст.

   
 
 автор: Ressfourt   (26.11.2005 в 00:04)   письмо автору
 
   для: cheops   (25.11.2005 в 18:20)
 

он может быть разным много тегов идет может идти просто текст а потом <font тралялялялял>TEXT</font>

потом опять текст и в нем гденить может встретится <img src="http://imagehost.com/image.jpg[gif][png]">и тд

мне надо сделать такую вещь что если я в пхп ставлю галку только смайлы то чтоб он смотрел есть ли такое <img src="http://http://imagehost.com/smiles/smile-1[2-120.gif]"> а все остальные img которые не соотвествуют smiles/smile-1[2-120.gif удалялись...

и так же чтоб если это не смайлы если я разрешил чтоб были теги на <img src="http://imagehost.com/image.jpg[gif][png]"> то он доставал оттуда только сылку а на изображение
http://imagehost.com/image.jpg[gif][png] и дальше уже пошла обработка что куда зачем это я знаю а вот как мне рег.выражение на все это написать

   
 
 автор: Ressfourt   (01.12.2005 в 10:59)   письмо автору
 
   для: Ressfourt   (26.11.2005 в 00:04)
 

Народ хелп :)

   
 
 автор: cheops   (01.12.2005 в 14:06)   письмо автору
 
   для: Ressfourt   (01.12.2005 в 10:59)
 

Вы бы кусочек текста прикрепили... его очень сложно воспроизводить - а без текста отладить регулярное выражение почти не реально.

   
 
 автор: Ressfourt   (02.12.2005 в 11:28)   письмо автору
 
   для: cheops   (01.12.2005 в 14:06)
 

кхм кусочек текста может быть таким <em><strong>sdfsdfsdfsdfsdf<img src="www.host.ru/img/smiles/smile-106.gif" alt="" /><font color="#800000">sdfsdfsdfsdf sdfsdfsdfsdfsfd</font></strong></em>
<img src="www.host.ru/img/smiles/smile-106.gif" alt="" />
<img src="www.host.ru/img/smiles/smile-106.gif" alt="" />
<font color="#800000">sdfsdfsdfsdf sdfsdfsdfsdfsfd</font></strong></em>
<font color="#800000">sdfsdfsdfsdf sdfsdfsdfsdfsfd</font></strong></em>

это вот для смайлов но еще могут быть <img src="www.somehost.com/somepicture.gif[jpg][png]" alt="" />

вот мне нужно проверять какие сылки это смайлы и какие сылки не смайлы
плюс узнавать если это элементы графики от сайта то тег img вообще удалять, если это смайлы то все впорядке тег пропускать, а вот если это рисунки с других сайтов то брать сылку (ну и дальше изменяю ее размеры на лету)... так же если кроме смайлов запрещено все сылки на графику то все теги img удалять если в них нету сылки на смайл на моем сайте

   
 
 автор: Ressfourt   (02.12.2005 в 13:38)   письмо автору
 
   для: Ressfourt   (02.12.2005 в 11:28)
 

хех ктонить поможет а?

   
 
 автор: cheops   (02.12.2005 в 14:01)   письмо автору
 
   для: Ressfourt   (02.12.2005 в 11:28)
 

Задачу лучше решать в несколько этапов. Сначала давайте найдём вхождение всех изображений
<?php 
  $text 
'кхм кусочек текста может быть таким <em><strong>sdfsdfsdfsdfsdf<img src="www.host.ru/img/smiles/smile-106.gif" alt="" /><font color="#800000">sdfsdfsdfsdf sdfsdfsdfsdfsfd</font></strong></em>
<img src="www.host.ru/img/smiles/smile-106.gif" alt="" />
<img src="www.host.ru/img/smiles/smile-106.gif" alt="" />
<font color="#800000">sdfsdfsdfsdf sdfsdfsdfsdfsfd</font></strong></em>
<font color="#800000">sdfsdfsdfsdf sdfsdfsdfsdfsfd</font></strong></em>

это вот для смайлов но еще могут быть <img src="www.somehost.com/somepicture.gif[jpg][png]" alt="" />'
;
  
$pattern "|<img[\s]*src=\"([^\"]*)\"[^>]*>|is";
  
$content preg_replace_callback($pattern,"img_check",$text); 
  echo 
$content;

  
// функция обратного вызова
  
function img_check($matches
  {
    
// как обычно: $matches[0] -  полное вхождение шаблона
    // $matches[1] - вхождение первой подмаски,
    // заключенной в круглые скобки, и так далее...
    
echo $matches[1]."<br>\r\n";
    return 
$matches[0];
  } 
?>

Функция img_check() - является функцией обратного вызова и выполняется всякий раз, когда найдено соответсвие регулярному выражению. $matches[0] соотвествует всему тэгу <img>, а $matches[1] только адресу картинки - далее можно анализировать $matches[1] на предмет соответствия http://http://imagehost.com/smiles/smile-[1-120].[jpg][png] - если не соответствует - возвращать пустую строку, если соответствует - $matches[0]. Если реализация этого блока вызывает затруднение - пишите - будем разбираться дальше.

   
 
 автор: Ressfourt   (02.12.2005 в 15:32)   письмо автору
 
   для: cheops   (02.12.2005 в 14:01)
 

спасибо попробую

   
 
 автор: Ressfourt   (13.02.2006 в 13:57)   письмо автору
 
   для: cheops   (02.12.2005 в 14:01)
 

чето не работает пишет Warning: preg_replace_callback() [function.preg-replace-callback]: requires argument 2, 'img_check', to be a valid callback in

   
 
 автор: Ressfourt   (13.02.2006 в 15:39)   письмо автору
 
   для: cheops   (02.12.2005 в 14:01)
 

а как в этом в хождении чтобы он показывал путь к изображению но так же показал www.host.ru/img/smiles/ без файла ?

т.е покажите пример регулярного выражения чтобы сылку разбить на папки хост и тд а то parse_url не подходить

   
 
 автор: Ressfourt   (13.02.2006 в 15:58)   письмо автору
 
   для: Ressfourt   (13.02.2006 в 15:39)
 

спасибо но уже сам тут придумал разбил все остальное через explode

   
 
 автор: Ressfourt   (13.02.2006 в 16:38)   письмо автору
 
   для: Ressfourt   (13.02.2006 в 15:58)
 

народ снова хелп я тут посмотрел что если добавляются такие элементы как width height border alt title vspace и тд в разных вариантах местаположения то он вхождение ничего не делает и не находит может быть так <img width="31" vspace="55" hspace="15" height="18" border="14" align="absbottom" src="http://www.somehost.ru/Smiles/18.gif" alt="kljaslkdjakljsdkjasdlkjasd" />

а может и подругому как в этом поиске регистра сделать чтобы он находил сылку?

   
 
 автор: Ressfourt   (13.02.2006 в 21:09)   письмо автору
 
   для: Ressfourt   (13.02.2006 в 16:38)
 

кто поможет?

   
 
 автор: cheops   (13.02.2006 в 21:49)   письмо автору
 
   для: Ressfourt   (13.02.2006 в 16:38)
 

>народ снова хелп я тут посмотрел что если добавляются такие
>элементы как width height border alt title vspace и тд в
>разных вариантах местаположения то он вхождение ничего не
>делает и не находит может быть так &lt;img width="31"
>vspace="55" hspace="15" height="18" border="14"
>align="absbottom" src="http://www.somehost.ru/Smiles/18.gif"
>alt="kljaslkdjakljsdkjasdlkjasd" />
Так это о каком коде речь идёт, уже о том который с explode()? Если да, не могли бы вы его привести?

   
 
 автор: Ressfourt   (13.02.2006 в 21:53)   письмо автору
 
   для: cheops   (13.02.2006 в 21:49)
 

нет тут идет речь уже без explode просто когда начал смотреть и когда добавляется алт или другие дополнительные значения то все SRC он уже не видит а эти допольнительные значения почему то могут добавляться или перед SRC Или После и хех поиск в рег.выражении не получаеться

   
 
 автор: Ressfourt   (13.02.2006 в 22:25)   письмо автору
 
   для: Ressfourt   (13.02.2006 в 21:53)
 

Cheops мне нужно чтобы он не зависимо от расположения находил SRC
после как у меня будет сылка есть ли способ в рег.выражениях сылку так же про парсить чтобы в ней не было image.gif/png/jpg и тл ... ?

   
 
 автор: cheops   (14.02.2006 в 02:09)   письмо автору
 
   для: Ressfourt   (13.02.2006 в 21:53)
 

Можно поступить следующим образом
<?php 
  $text 
'народ снова хелп я тут посмотрел что если добавляются такие элементы как width height border alt title vspace и тд в разных вариантах местаположения то он вхождение ничего не делает и не находит может быть так <img width="31" vspace="55" hspace="15" height="18" border="14" align="absbottom" src="http://www.somehost.ru/Smiles/18.gif" alt="kljaslkdjakljsdkjasdlkjasd" />';
  
$pattern "|<img.*src=\"([^\"]+)\"|isU";
  
preg_match_all($pattern,$text,$out);
  echo 
"<pre>";
  
print_r($out[1]);
  echo 
"</pre>";
?>

   
Rambler's Top100
вверх

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