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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рег. выражение, в тексте есть символ "/" 
:(
    Опции темы
RaZoR
Дата 6.6.2005, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если использовать следующий код:
Код

$string="sasdsagdhas/test/adgasga";
if (preg_match("/\b\/test\/\b/i",$string)) echo "Yes";
else echo "No";

то выводится Yes, хотя /test/ это не отдельное слово.
А если использовать:
Код

$string="sasdsagdhas /test/ adgasga";
if (preg_match("/\b\/test\/\b/i",$string)) echo "Yes";
else echo "No";

то выводится No, хотя /test/ отделено пробелами от остального текста.

В чем проблема?
PM MAIL ICQ   Вверх
skalex
Дата 6.6.2005, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


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

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



По всей видимости, PHP не считает фразу /test/ словом. ИМХО в вашем случае более корректно было бы использовать следующие регулярные выражения:

Код
$string="sasdsagdhas/test/adgasga";
if (preg_match("%\s+/test/\s+%i",$string)) echo "Yes";
else echo "No";

$string="sasdsagdhas /test/ adgasga";
if (preg_match("%\s+/test/\s+%i",$string)) echo "Yes";
else echo "No";

PM   Вверх
RaZoR
Дата 6.6.2005, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
По всей видимости, PHP не считает фразу /test/ словом.

Странно...
Цитата
...использовать следующие регулярные выражения...

Спасибо. Это работает.
PM MAIL ICQ   Вверх
skalex
Дата 6.6.2005, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


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

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



Ну ничего здесь странного особо нет, т.к. \b - означает на границе слова. Т.е. в данном контексте слово - это определенная область ограниченная пробельным или пунктуационным символом, которым символ "/" не является.
Кстати надо в регулярное выражение еще добавить символы пунктуации.
PM   Вверх
RaZoR
Дата 6.6.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
\b - означает на границе слова...

Ок, теперь понятно.
Цитата
Кстати надо в регулярное выражение еще добавить символы пунктуации.

Да, это я уже сделал. Спасибо.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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