|
|
|
| Народ сразу скажу что с регулярными выражениям вообще еще не дружу поэтому сильно не ругайтесь,
помогите с такой задачей
человек пишет текст вставляет сылки на картинки смайлы и тд все это делеается в FCKeditor
задача в чем... когда человек постит идет проверка на вхождение есть ли теги <img
если есть то проверить если это рисунки из определенныой папки скажем моего сервера + с определенным наименованием рисунка то result true если за пределами моего сайта то он должен вытащить сылку на изображение (дальше как вывести изображение на лету я знаю) вот помогите составить этот рег.
и еще скажите как сделать чтоб вот если в конфиге у меня прописано на запрет вставки изображений а человек перетащил обьект или рисунок в окошко редактора он его добавляет... ну вот задача в чем тоже найти если тег <img посмотреть какое имя у файла и если это рисунок(смайл) то добро пусть добавляет а если нет то чтоб он вырезал весь тег img
кхм я надеюсь смог сказать что я хочу.. .сорри ребята с русским у меня завал | |
|
|
|
|
|
|
|
для: Ressfourt
(25.11.2005 в 14:02)
| | ну народ помогите плиззз | |
|
|
|
|
|
|
|
для: Ressfourt
(25.11.2005 в 14:02)
| | Давайте подробнее... какой текст идёт в базу данных (файл)? С тэгом <img src=>? Тогда приведите пожалуйста кусок кода с несколькими тэгами... регулярные выражения вещь достаточно плотная и сильно зависит от конкретного текста, чтобы у вас всё воспроизводилось нужен ваш текст. | |
|
|
|
|
|
|
|
для: 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
(26.11.2005 в 00:04)
| | Народ хелп :) | |
|
|
|
|
|
|
|
для: Ressfourt
(01.12.2005 в 10:59)
| | Вы бы кусочек текста прикрепили... его очень сложно воспроизводить - а без текста отладить регулярное выражение почти не реально. | |
|
|
|
|
|
|
|
для: 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 в 11:28)
| | хех ктонить поможет а? | |
|
|
|
|
|
|
|
для: 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]. Если реализация этого блока вызывает затруднение - пишите - будем разбираться дальше. | |
|
|
|
|
|
|
|
для: cheops
(02.12.2005 в 14:01)
| | спасибо попробую | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: cheops
(02.12.2005 в 14:01)
| | а как в этом в хождении чтобы он показывал путь к изображению но так же показал www.host.ru/img/smiles/ без файла ?
т.е покажите пример регулярного выражения чтобы сылку разбить на папки хост и тд а то parse_url не подходить | |
|
|
|
|
|
|
|
для: Ressfourt
(13.02.2006 в 15:39)
| | спасибо но уже сам тут придумал разбил все остальное через explode | |
|
|
|
|
|
|
|
для: 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 в 16:38)
| | кто поможет? | |
|
|
|
|
|
|
|
для: Ressfourt
(13.02.2006 в 16:38)
| | >народ снова хелп я тут посмотрел что если добавляются такие
>элементы как 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" />
Так это о каком коде речь идёт, уже о том который с explode()? Если да, не могли бы вы его привести? | |
|
|
|
|
|
|
|
для: cheops
(13.02.2006 в 21:49)
| | нет тут идет речь уже без explode просто когда начал смотреть и когда добавляется алт или другие дополнительные значения то все SRC он уже не видит а эти допольнительные значения почему то могут добавляться или перед SRC Или После и хех поиск в рег.выражении не получаеться | |
|
|
|
|
|
|
|
для: Ressfourt
(13.02.2006 в 21:53)
| | Cheops мне нужно чтобы он не зависимо от расположения находил SRC
после как у меня будет сылка есть ли способ в рег.выражениях сылку так же про парсить чтобы в ней не было image.gif/png/jpg и тл ... ? | |
|
|
|
|
|
|
|
для: 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>";
?>
|
| |
|
|
|