[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ereg_replace не хочет заменять
Vikt0r
подскажите пожалуйста в чем проблема.

в общем если отправить на запись данные из формы в файл.

HTML
<form method=post>
<textarea name='txt'></textarea>
<input type=submit name=ok>
</form>


PHP
if(@isset($ok))
{
$fp = fopen('inc/news.html', 'w+');
$txt = str_replace("<p>&nbsp;</p>","<br>",$txt);
$txt = ereg_replace('\\\"',"'",$txt);
$txt = ereg_replace("\\\'","'",$txt);
fputs($pf"$txt");
fclose($pf);
}


а теперь проблема, когда в форме ставлю такой слэш \, при записи оно его удваивает, образуется двойной слэш....... если ставить обатный слэш /, сохраняет без удвоений.....

не пойму, почему нельзя сделать через ereg_replace убирание двойных слешов, то есть ereg_replace("\\'","\",$txt);

на версии php 5 работает нормально, слэш не удваивается... на php версии 4 удваивается.... не понятно в чем дело. подскажите пожалуйста, кто знает в чем причина и как исправить.

заранее благодарен



Спустя 19 минут, 21 секунда (18.06.2009 - 00:49) twin написал(а):
Всё банально и просто. Ни пр ичем тут особо версия, нужно просто опреднлиться с магическими кавычками.

Спустя 8 часов, 24 минуты, 59 секунд (18.06.2009 - 09:14) Vikt0r написал(а):
Цитата (twin @ 17.06.2009 - 21:49)
Всё банально и просто. Ни пр ичем тут особо версия, нужно просто опреднлиться с магическими кавычками.

не подскажете какие именно?
в мануале смотрел, там про слэши не слова не написано... только просто двойные кавычки.

Спустя 11 минут, 9 секунд (18.06.2009 - 09:26) glock18 написал(а):
параметр magic_quotes_gpc наз-ся в php.ini.

Цитата
ereg_replace не хочет заменять

когда читаю такие темы, думаю "вот негодяй php. работать не хочет..." smile.gif Ошибку надо у себя искать, а обвинять в том, что не работает php или еще что-то по меньшей мере глупо. Я когда начинал тоже так любил. это не помогает - помогает если у себя ищешь ошибку или хотя бы понять ее пытаешься.

Теперь к вопросу:

PHP
//ereg_replace("\\'","\",$txt);


здесь вообще говоря вы забыли, что \ надо удваивать в кавычках. ваш первый параметр вовсе не "\\" как вы подумали, а "\". выводы?

PS: из-за того что второй параметр вообще неправильно записан и ведет к синт. ошибке, даже блок php здесь на сайте раъезжается. вы ведь поэтому его не стали в блок php ставить? а то понятно стало бы - что что-то там не то.

Спустя 19 минут, 28 секунд (18.06.2009 - 09:45) Vikt0r написал(а):
Работаю на двух разных серваках, то есть пишу на своем локальном, скрипт работает... перенесу на сервак и работает со всем по другому.... по этому трудно выискивать причину \ ошибки, особенно если эта ошибка впервые в глаза встречается.

а по поводу ereg_replace со слешем, навел как пример) сайт не отображает вообще, сколько не ставь этих слешей там. синтаксическая ошибка в общем.

огромное спасибо за помощь!

Спустя 10 минут, 15 секунд (18.06.2009 - 09:55) glock18 написал(а):
Цитата
Работаю на двух разных серваках

Цитата
параметр magic_quotes_gpc наз-ся в php.ini.


почитайте про magic_quotes. это как раз - настройка сервера. у вас они похоже выключены, а у хостера - включены. вот и вся проблема.

я обычно делаю примерно такие функции:

PHP
function EscapeAfterRequest($string)
{
    if (
get_magic_quotes_gpc())
      return 
$string// строка уже заэспейплена. нужно делать только с переменными пришедшими из GET, POST, COOKIE.

    
return mysql_real_escape_string($string); // эскейпим строку
}


по аналогии UnescapeAfterRequest.

Спустя 1 час, 56 минут, 41 секунда (18.06.2009 - 11:52) Vikt0r написал(а):
я конечно извиняюсь, с функциями особо не дружу, по этому не понимаю как реализовать в скрипт...

как я понял последняя строка  return mysql_real_escape_string нам не нужна, т.к. не используется mysql?

к функциям надо вообще что-то добавлять? насколько я понял должен быть код такого вида:

PHP
function EscapeAfterRequest($string)
{
    if (get_magic_quotes_gpc())
{
    $txt = addslashes($_POST['txt']);
}
 else {
    $txt = $_POST['txt'];
}

      return $string;
}


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

пробовал так:

PHP
function EscapeAfterRequest($string)
{
    if (get_magic_quotes_gpc())
      return $string; // строка уже заэспейплена. нужно делать только с переменными пришедшими из GET, POST, COOKIE.

    return mysql_real_escape_string($string); // эскейпим строку
}

$txt = EscapeAfterRequest($_POST['txt']);


тоже не выходит )

есть конечно вариант отключить их через .htaccess, но раз пошли функции , мне стало интересно как на практике они применяются...

Спустя 7 минут, 30 секунд (18.06.2009 - 11:59) glock18 написал(а):
ээээээ...

если mysql не используете, то можете (вместо нее!!) использовать addslashes.

То что вы выше написали не поддается критике.

Цитата
почитайте про magic_quotes


надеюсь, что мне не придется больше повторять это.

Спустя 23 минуты, 23 секунды (18.06.2009 - 12:23) Vikt0r написал(а):
Цитата (glock18 @ 18.06.2009 - 08:59)
ээээээ...

если mysql не используете, то можете (вместо нее!!) использовать addslashes.

То что вы выше написали не поддается критике.

Цитата
почитайте про magic_quotes


надеюсь, что мне не придется больше повторять это.

спасибо

Спустя 2 часа, 19 минут, 24 секунды (18.06.2009 - 14:42) Vikt0r написал(а):
оказывается все так просто было )

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

$txt = stripslashes($_POST['txt']);

стыдно однако...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.