Jump to content
  • 0

eregi_replace() и REG_EESCAPE


Victor Ananiev
 Share

Question

Все уже решилось методом тыка) но все же интересно, почему что бы заменить \' на ' мне пришлось написать такое(это не предъявление претензий к разработчикам модулей PHP ;) ):

eregi_replace('\\\\\'' , '\'', $_POST['cnt_name']);

Ведь для того что бы экранировать слэш нужно от это \\ и апостроф \' тоесть \\\' а для того что бы работало нужно добавить лишний слэш(( мне не жлако, но интереен принцып)

upd: Забыл написать значение той приставки в названии темы) Это название ошибки которое выводится при трех слэшах)

Edited by Victor Ananiev
Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

ты не понял))) смотри:

\\ \\ \'

Вот так работает, только без пробелов))) а если три слэша и апостроф(как ты говорил) то именно тут не работает))) хотя у меня появилось подозрение, что там из за формы появляется лишний слэш) и я его тоже должен удалить) вот проверю и отпишу)))

Link to comment
Share on other sites

  • 0

нашел еще одну фичку:

если(паттерн такой: \\)

{

То вывдит ту ошибку)

}

но если(паттерн такой: \\\\)

{

То заменяет \ на то на что его надо заменить)

}

Вот так, не знаю в чем прикол...

Link to comment
Share on other sites

  • 0

ну так строка походу интерпретируется как строка в двойных кавычках -- то есть "\\\\" станет \\, в регекспе это просто слеш.

если поставите просто \\, то выйдет регексп вида... ну если в Перле то так:

m#\#

Логично, что так матерится.

С "\\\\" получится

m#\\#

то есть ищем слеш.

Соответственно "\\\\a" найдет последовательность "слеш" + "а"

В JS при объявлении регеспов через new походу такой же гемор

Edited by e1f
Link to comment
Share on other sites

  • 0

Увы, я в php тоже не очень ;)

но давайте попробуем

echo("\n") -- печать символа перевода строки.

echo("\\") -- печать символа '\'.

eregi_replace('\\' , 'a', $str) -- пытается применить поиск к строке $str по регекспу '\' -- по видимому считается некорректным.

eregi_replace('\\\\' , 'a', $str) -- то же но по регекспу '\\' - то есть по символу '\'

Например, если вы напишете eregi_replace('$' , 'a', $str), то скорее всего получите ошибку (если я прав), поскольку так вы пытаетесь

искать по регекспу '$' -- неверный регексп (просто конец строки и ничего)

eregi_replace('\$' , 'a', $str) -- видимо тоже будет ошибка

eregi_replace('\\\$' , 'a', $str) -- а так ищем по '\$' -- то есть доллар заменим на а.

Если у вас есть доступ к пхп-итерпретатору -- проверьте пожалуйста :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy