ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

регулярные выражения
  #1  
Старый 03.12.2007, 16:50
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию регулярные выражения

пытаюсь написать собственный парсер для ИМГ тегов.

PHP код:
$data "текст факинг текст [img]hack.jpg[/img] второй текст [img]deex.jpg[/img]";
eregi("(\[img\]([a-z.]+)\[/img\])"$data$regs);

echo (
"<pre>");
print_r($regs);
echo (
"</pre>"); 
на данный момент встал вопрос:
почему результат выводит один тег два раза?

PHP код:
Array
(
    [
0] => [img]hack.jpg[/img]
    [
1] => [img]hack.jpg[/img]
    [
2] => hack.jpg

 
Ответить с цитированием

  #2  
Старый 03.12.2007, 16:55
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Он сначала тебе выводит полностью шаблон, потом совпадение с первым подшаблоном, потом со вторым.
 
Ответить с цитированием

  #3  
Старый 03.12.2007, 17:09
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

ничо не понимаю

ну а здесь что может быть не так?
PHP код:
  $str "текст факинг текст [img]hack.jpg[/img] второй текст [img]deex.jpg[/img]";
  
$pattern "/([img\])/i";
  
$replacement "1 \${1}";
  print 
preg_replace($pattern$replacement$str); // line 30 
PHP код:
Warningpreg_replace() [function.preg-replace]: Compilation failedmissing terminating ] for character class at offset 8 in h:\home\localhost\www\txtdb\r.php on line 30 
 
Ответить с цитированием

  #4  
Старый 03.12.2007, 17:17
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Ошибка в паттерне:

Цитата:
$pattern = "/([img\])/i";
Обрати внимание, что у тебя внутри шаблона идёт квадратная скобка [. В терминах regexp всё что между квадратных скобок трактуется как класс символов ([a-zA-Z] и т.д.). У тебя же, как я понимаю, знчение квадратной скобки должно быть "как символ"... Вот и экранируй его тогда... Причём вторую скобку ты проэкранировал, а первую забыл... Делай так:

Цитата:
$pattern = "/(\[img\])/i";
 
Ответить с цитированием

  #5  
Старый 03.12.2007, 17:29
Аватар для AkyHa_MaTaTa
AkyHa_MaTaTa
Постоянный
Регистрация: 19.03.2007
Сообщений: 684
Провел на форуме:
3152874

Репутация: 1020


Отправить сообщение для AkyHa_MaTaTa с помощью ICQ
По умолчанию

Че та я не доганю, ты хочешь заменить все теги на img на 1$
 
Ответить с цитированием

  #6  
Старый 03.12.2007, 17:31
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

cпасибо большое, тока я всё ещё не могу получить желаемое:

PHP код:
 $str "текст факинг текст [img]hack.jpg[/img] второй текст [img]deex.jpg[/img]";
$pattern "/(\[img\])([a-z.A-Z0-9]+)(\[/img\])/i";
  
$replacement "<a href='img/\${2}'>\${2}</a>";
  print 
preg_replace($pattern$replacement$str); // line 30 
проблема вот в этом:
$pattern = "/(\[img\])([a-z.A-Z0-9]+)(\[/img\])/i";
когда я добавляю этот кусок, у меня всё бьётся. а без него я получаю то что хочу -
[img]hack.jpg[/img] превращается в ссылку, но в конце остаётся [/img]:


текст факинг текст hack.jpg[/img] второй текст deex.jpg[/img]
 
Ответить с цитированием

  #7  
Старый 03.12.2007, 17:36
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

А так не пробовал?

Цитата:
$pattern = "/(\[img\])([a-z.A-Z0-9]+)(\[\/img\])/i";
 
Ответить с цитированием

  #8  
Старый 03.12.2007, 17:38
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

О да! Под вечер башка совсем варить отказывается
Спасиба большое
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
регулярные покупаем траф и загрузки loader32 Трафик, лоады, инсталлы, загрузки - Покупка, продажа 0 22.09.2007 20:56
Регулярные выражения и sql инъекции Satell PHP, PERL, MySQL, JavaScript 4 18.09.2007 09:37
регулярные выражения. вопрос DRON-ANARCHY PHP, PERL, MySQL, JavaScript 20 01.05.2007 11:42
Регулярные выражения [Beta-version] Talisman Авторские статьи 8 20.03.2007 16:32
Обнаружение Sql инъекций и Css атак k00p3r Чужие Статьи 0 12.06.2005 20:43



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ