2013-06-21 5 views
1

У меня есть простое текстовое поле, где клиенты могут вводить свои коды html/php.Двойной при вводе текста внутри текстового поля

На некоторых серверах все работает нормально, но на некоторых, как только я типа:

\ он сохраняется как \\

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

$text = str_replace('\','',$text); 

Любые идеи?

+0

Мда. Вам нужно начать искать различия между серверами. Ваш код, версии ОС, версии PHP и т. Д. Очевидно, что существует различие между машинами, которые вызывают разные типы поведения. Не пытайтесь исправить это с помощью кода. Это должно быть fixabe, сопоставляя конфигурации машин. И что вы имеете в виду: 'Это не работает?' –

+1

У вас включен magic_quotes_gpc. Это также подразумевает некоторую старую версию PHP. Сортируйте причину, а не ее продукт. –

ответ

1

Вы, наверное, ищете:

$text = str_replace('\\\\','\\',$text); 

Это заменяет все \\ с \, или:

$text = str_replace('\\','',$text); 

Это заменяет все \ ни с чем.

Причины вы должны использовать \\\\\\ для двух косых черт) является, чтобы избежать \, так как сам по себе, '\' убегает закрывающую кавычку, что делает вашу строку неполной. Итак, вам нужно сбежать от \, превратив его в '\\'.

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

И, после всего этого, вы можете заменить это только одним звонком на stripslashes(), так как N.B. указывает, и вы достигнете тех же результатов.

+0

Также известен как 'stripslashes()' –

+0

Да, это он;) – Spacedust

+0

@Spacedust: Это нормально, но не зависеть от этого как вашего окончательного решения. Найдите основную причину! –

0

Вы всегда можете использовать ASCII коды:

$text="\ it's saved as \\"; 
    $text = str_replace(chr(92),'',$text); 
    echo $text; 

возвращение:

это сохраненное в