Продолжение темы регул. выражений

Vasj

Guest
Продолжение темы регул. выражений

Здравствуйте.
Не могу разобраться с модификаторами есть строка
$a="hello my world";
$b=preg_replase('[o]','a',$a);
У меня на локале по всей строке происходит замена о на а.
непонятны зачем тогда нужнымодификаторы и как происходит поиск вот в такой строке

$b=preg_replase('/^[o]+$.','a',$a);

Стать читал но так не смог с ними разобраться
Я так понял что в первом случае должен был быть изменен 1 символ строки если он совпадает а остальные не прочитаны,а во втором случае поиск и замена должна была произойти во всей строке но она почему-то не происходит.Подскажите что я понял не так.
 

Demiurg

Guest
Vasj
Советую приводить реальные примеры. Функции preg_replase не существует.
 

Фанат

oncle terrible
Команда форума
непонятны зачем тогда нужнымодификаторы
для замены о на а - не нужны.
как происходит поиск вот в такой строке
я думаю, имеет смысл идти не от обратного - как происходит поиск, а от задачи - как сделать замену того-то на то-то.
Впрочем, если тебя интересует вопрос, как происходит поиск, ты можешь почитать документацию и статьи.
 

Vasj

Guest
Originally posted by Demiurg
Vasj
Советую приводить реальные примеры. Функции preg_replase не существует.
Да извините за опечатку функция такая:

$b=preg_replace(...)

-~{}~ 07.01.05 20:09:

Originally posted by Фанат
для заменыч о на а - не нужны.

я думаю, имеет смысл идти не от обратного - как происходит поиск, а от задачи - как сделать замену того-то на то-то.
Задча примерно такая
на сервер присходит аплоад текстового файла файла,
и требуется проверить введенный путь пользователем к файлу,чтобы защитить скрипт от введенной строки.Так называемый хакер не смог выполнить зависания или вскрытия сервера.
 

Vasj

Guest
Originally posted by Фанат
и для этого надо производить замену а на о?
Конечно нет я привел простой пример чтобы было понятно
а строка выглядит так:
$b=preg_replace('/[^a-zA-Z0-9_-]+/s','',$a);

где в переменой $а хранится строка введенная пользователем.
Но вопрос не в этом я его ужесформировал в самом начале

:)
 

Фанат

oncle terrible
Команда форума
постой.
я что-то не могу понять.ты методом тыка что ли работаешь?
составляешь регулярное выражение от балды, а потом смотришь - поможет ли оно от хакера?
и сколько вариантов уже перебрал?
 

Vasj

Guest
Originally posted by Фанат
постой.
я что-то не могу понять.ты методом тыка что ли работаешь?
составляешь регулярное выражение от балды, а потом смотришь - поможет ли оно от хакера?
и сколько вариантов уже перебрал?
Эту строку я взял из 7 номера PHPinside,как она работает мне понятно,происходит поиск в регулярном выражении и все символы которые отсутствуют в квадратных скобках заменяются на пустые кавычки:) ,тем самым исключая попытку записи команды(вскрытия) скрипту,но поясняю ещё раз вопрос не в этом я пытаюсь разобраться в написании рег. выражений.
В статье написано:
Один символьный класс может совпасть только с одним символом! - это надо понимать!

Как в условии задать поиск двух символов?
 

Vasj

Guest
Originally posted by Фанат
об этом написано в статье.
Не понятно одно
если я провожу замену так preg_replace('[e]','a',$a);

то происходит замена всех е на а а если пишу так
preg_replace('/^[e]+$/','a',$a);

то ничего не происходит, почему так?вот это и не понятно.
Я так понял что во втором случае строка становится как бы одним символом так что ли,потому что если в квадратные скобки я перепишу всю строку то тогда она вся поменяется
 

Фанат

oncle terrible
Команда форума
Васил.
Ты сейчас идешь, и читаешь по ссылкам, что тебе дал Симм, ответы на свои вопросы.
Если я увижу здесь еще одно сообщение от тебя, целью которого является то, чтобы кто-то за тебя сходил и скопировал из статьи объясниние - тема будет закрыта.
 

neko

tеam neko
Vasj
первое от второго
отличается тремя символами
^
+
$
все что тебе надо сделать сейчас это прочитать что они означают
 
Сверху