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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярное выражение, функция preg_replace(), В чем ошибка 
V
    Опции темы
zetxi815eb
Дата 5.8.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Написал регулярное выражение, которое должно заменять все симвлы, кроме цифр, букв латинского алфавита, - и _ на 'X'. Но функция не работает. Ничего не заменяет. Делал по примеру из книги.
Код

$string = preg_replace ('[^0-9a-Z-_]','X',$string);


Помогите разобраться. ЗАранее спасибо.


PM MAIL   Вверх
enof
Дата 5.8.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Потому что квадратные скобки в данном случае рассматриваются как ограничители шаблона.
Нужно сделать либо так:
Код

[[^0-9a-Z-_]]

Либо использовать в качестве ограничителя например #:
Код

#[^0-9a-Z-_]#


И еще, дефис в символьном классе должен писаться в самом начале, иначе он указывает диапазон, т.е.
Код

#[^-0-9a-Z_]#


Это сообщение отредактировал(а) enof - 5.8.2009, 16:45
PM MAIL ICQ Skype   Вверх
zetxi815eb
Дата 5.8.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



enof, сделал вот так

Код

$string = preg_replace ('[[^-0-9a-Z_]]','X',$string);


но выдает ошибку... ту же самою ошибку выдает и с $ ограничителями.
Compilation failed: range out of order in character class at offset 
PM MAIL   Вверх
enof
Дата 5.8.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



a-zA-Z

Добавлено через 53 секунды
Либо a-z и модификатор i.
Самую важную часть сообщения об ошибке вы зачем-то отрезали. smile 
PM MAIL ICQ Skype   Вверх
zetxi815eb
Дата 5.8.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



enof, да вроде ничего главного не отрезалось:


Код

Warning: preg_replace() [function.preg-replace]: Compilation failed: range out of order in character class at offset 8 in Z:\home\localhost\www\test.php on line 6



сделал так...работает
Код

$string = preg_replace ('[[^-0-9a-zA-Z_]]','X',$string);


Большое Вам спасибо smile 
PM MAIL   Вверх
enof
Дата 5.8.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(zetxi815eb @  5.8.2009,  18:14 Найти цитируемый пост)
at offset 8

здесь указано место ошибки, которое было зачем-то выкинуто.
Отметьте тему решенной.
PM MAIL ICQ 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.0900 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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