Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> и снова regexp, помогите научится 
:(
    Опции темы
qpayct
Дата 26.6.2010, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



начал тестить свои первые загагулины в regexp. пока что ниего не получается.

Код

header('Content-Type: text/html; charset=utf-8');

$str = "Посмотрите сами, такая [i]форма[/i] записи условия поиска будет работать! так как
[a name=q1 href=http://www.fuck.you]мы[/a] описали каждым символьным классом один символ в условии поиска.
Вам не кажется, что слишком громоздкое условие поиска получается? И тут на помощь приходят
квантификаторы. Вспоминаем английский: quantity - количество. Т.е. квантификатор - то, что выражает количество чего-то,
в нашем случае количество символов в условии поиска. Упрощаем условие поиска при помощи квантификаторов";
if(preg_replace('/\[(\w){.+}[\\s]{*}\](\w){.*?}(\[\/$1\])/', '/\<$1[\\s]$2\>$3(\<\/$1\>)/', $str))
{
    echo $str;
}
что я делаю не так?
PM MAIL   Вверх
qpayct
Дата 26.6.2010, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



что то я не пойму нифига :wall: 

Код
$str = "Посмотрите сами, такая [i]форма[/i] записи условия поиска будет работать! так как
[a name=q1 href=http://www.fuck.you]мы[/a] описали каждым символьным классом один символ в условии поиска.
Вам не кажется, что слишком громоздкое условие поиска получается? И тут на помощь приходят
квантификаторы. Вспоминаем английский: quantity - количество. Т.е. квантификатор - то, что выражает количество чего-то,
в нашем случае количество символов в условии поиска. Упрощаем условие поиска при помощи квантификаторов";

$matches = preg_replace('/\[(\w+)\](.*)\[\/(\w+)\]/', '<$1>$2</$3>', $str);

echo $matches;

работает правильно только ведь по идее должно не /b находить в $3 а как раз /i ? почему так происходит?
PM MAIL   Вверх
ksnk
Дата 26.6.2010, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Код

$str = "Посмотрите сами, такая [i]форма[/i] записи форма условия поиска [i]форма[/i]будет работать! так как";
$matches = preg_replace('/\[(\w+)\](.*?)\[\/\1\]/', '<$1>$2</$1>', $str);

?

еще один вариант
Код

preg_replace('/\[(i|b|strong|u)\](.*?)\[\/\1\]/', '<$1>$2</$1>', $str)



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
qpayct
Дата 27.6.2010, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



ksnk
спасибо.

я уже успел разобраться 
Код

preg_replace('/\[(\w+)\](.*?)\[\/(\1)\]/', '<$1>$2</$3>', $str);
возьму на вооружение ваш пример с целью оптимизации так сказать ;)
Код

preg_replace('/\[(\w+)\](.*?)\[\/\1\]/', '<$1>$2</$1>', $str);

появился ещё один вопрос по теме: чем в пхп заменить модификатор g(для глобального поиска)?
PM MAIL   Вверх
ksnk
Дата 27.6.2010, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



qpayct, С регулярками складывается ощущения, что реализаторы их в разных языках сначала слышали что-то про регулярки, потом сделали их (в принципе - не такая и страшная реализация ;)) а потом хватались за голову - что-ж у нас такое получилось.
Так вот. 
Модификатор G в php не используется. В php эту проблему решают дополнительными параметрами и дополнительными фунциями. preg_replace по любому будет менять все подходящие последовательности символов.
Если нужно не все - нужно читать описание самого preg_replace, там есть еще дополнительные параметры.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.