HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: 537


По умолчанию регулярные выражения

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

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
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


По умолчанию

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

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

Репутация: 537


По умолчанию

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

ну а здесь что может быть не так?
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
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


По умолчанию

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

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

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

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

Репутация: 1020


По умолчанию

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

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

Репутация: 537


По умолчанию

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
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


По умолчанию

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

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

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

Репутация: 537


По умолчанию

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
регулярные покупаем траф и загрузки loader32 Трафик, инсталлы, загрузки - Покупка, продажа 0 22.09.2007 20:56
Регулярные выражения и sql инъекции Satell PHP 4 18.09.2007 09:37
регулярные выражения. вопрос DRON-ANARCHY PHP 20 01.05.2007 11:42



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


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




ANTICHAT ™ © 2001- Antichat Kft.