Php 双\在文本字段内输入文本时

Php 双\在文本字段内输入文本时,php,string,textfield,str-replace,Php,String,Textfield,Str Replace,我有一个简单的文本字段,客户可以在其中输入html/php代码 在某些服务器上,一切正常,但在某些服务器上,只要我键入: \它保存为\\ 所以我想用这样的代码删除它,但它不起作用: $text = str_replace('\','',$text); 有什么想法吗?您可能正在寻找: $text = str_replace('\\\\','\\',$text); 这将用\替换所有\,或者: $text = str_replace('\\','',$text); 这将用零替换所有的\ 您需要使

我有一个简单的文本字段,客户可以在其中输入html/php代码

在某些服务器上,一切正常,但在某些服务器上,只要我键入:

\
它保存为
\\

所以我想用这样的代码删除它,但它不起作用:

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

有什么想法吗?

您可能正在寻找:

$text = str_replace('\\\\','\\',$text);
这将用
\
替换所有
\
,或者:

$text = str_replace('\\','',$text);
这将用零替换所有的
\

您需要使用
\\
(和
\\\\\\\\
两个斜杠)的原因是为了转义
\
,因为本身,
'\'
正在转义结束引号,使字符串不完整。因此,您需要转义
\
,将其转换为
'\\'

服务器之间存在这种差异的原因很可能是,您可以通过确保两台服务器对此配置条目具有相同的值来防止出现上述代码


而且,在所有这些之后,您可以将其替换为一个调用,正如所指出的,您将获得完全相同的结果。

您可能正在寻找:

$text = str_replace('\\\\','\\',$text);
这将用
\
替换所有
\
,或者:

$text = str_replace('\\','',$text);
这将用零替换所有的
\

您需要使用
\\
(和
\\\\\\\\
两个斜杠)的原因是为了转义
\
,因为本身,
'\'
正在转义结束引号,使字符串不完整。因此,您需要转义
\
,将其转换为
'\\'

服务器之间存在这种差异的原因很可能是,您可以通过确保两台服务器对此配置条目具有相同的值来防止出现上述代码


而且,在所有这些之后,您可以将其替换为调用,正如所指出的,您将获得完全相同的结果。

您始终可以使用ascii代码:

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

它被保存为


您始终可以使用ascii码:

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

它被保存为


嗯。你需要开始寻找服务器之间的差异。您的代码、操作系统版本、PHP版本等。导致不同行为的机器之间显然存在差异。不要试图用代码来修复它。这应该通过匹配机器的配置来解决。你是什么意思:
它不起作用了?
你已经打开了magic\u quotes\u gpc。这也意味着一些旧版本的PHP。把原因分类,而不是结果。您需要开始查找服务器之间的差异。您的代码、操作系统版本、PHP版本等。导致不同行为的机器之间显然存在差异。不要试图用代码来修复它。这应该通过匹配机器的配置来解决。你是什么意思:
它不起作用了?
你已经打开了magic\u quotes\u gpc。这也意味着一些旧版本的PHP。排序原因,而不是结果。也称为
stripslashes()
@Spacedust:这很好,但不要依赖于此作为最终解决方案。找到根本原因@注意-是的,但我想用原始代码向OP解释一下。不过我会加上这一点,谢谢。(还有,漂亮的首字母
;)
)如何用正确的字符替换单引号或双引号?“我在那里也得到了斜杠”。@Spacedust-我已经更新了我的答案。您可以使用代码的第二个版本,或者正如N.B.所指出的,
stripslashes()
。也称为
stripslashes()
@Spacedust:这很好,但不要依赖于此作为最终解决方案。找到根本原因@注意-是的,但我想用原始代码向OP解释一下。不过我会加上这一点,谢谢。(还有,漂亮的首字母
;)
)如何用正确的字符替换单引号或双引号?“我在那里也得到了斜杠”。@Spacedust-我已经更新了我的答案。您可以使用代码的第二个版本,也可以像N.B.指出的那样,
stripslashes()