Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php正则表达式如何添加反斜杠\&引用;?_Php_Regex_.htaccess_Backslash - Fatal编程技术网

Php正则表达式如何添加反斜杠\&引用;?

Php正则表达式如何添加反斜杠\&引用;?,php,regex,.htaccess,backslash,Php,Regex,.htaccess,Backslash,我想在所有非字母数字字符之前添加一个反斜杠“\”,如“你好吗\:\)”,因此我使用了以下方法: $code = preg_replace('/([^A-Za-z0-9])/i', '\$1', $code); 但它不起作用。相反,它只是呼应“\$1”。我做错了什么 我也试过了 $code = preg_replace('/([^A-Za-z0-9])/i', '\\$1', $code); 但是不行。你需要四个反斜杠: $code = preg_replace('/([^A-Za-z0-9

我想在所有非字母数字字符之前添加一个反斜杠“\”,如“你好吗\:\)”,因此我使用了以下方法:

$code = preg_replace('/([^A-Za-z0-9])/i', '\$1', $code);
但它不起作用。相反,它只是呼应“\$1”。我做错了什么

我也试过了

$code = preg_replace('/([^A-Za-z0-9])/i', '\\$1', $code);

但是不行。

你需要四个反斜杠:

 $code = preg_replace('/([^A-Za-z0-9])/i', '\\\\$1', $code);

原因是反斜杠在PHP字符串上下文中自动转义(甚至是单引号)。要让PCRE看到一个,至少需要两个。但是为了不被误解以掩盖替换占位符,您仍然需要将其加倍。(顺便说一句,三个反斜杠也会起作用。)

你需要四个反斜杠:

 $code = preg_replace('/([^A-Za-z0-9])/i', '\\\\$1', $code);
原因是反斜杠在PHP字符串上下文中自动转义(甚至是单引号)。要让PCRE看到一个,至少需要两个。但是为了不被误解以掩盖替换占位符,您仍然需要将其加倍。(顺便说一句,三个反斜杠也会意外地起作用。)

示例:

<?php
$str = "Is your name O'reilly?";

// Outputs: Is your name O\'reilly?
echo addslashes($str);
?>
示例:

<?php
$str = "Is your name O'reilly?";

// Outputs: Is your name O\'reilly?
echo addslashes($str);
?>

你错过了一个\(因为它需要转义,它应该是
\$1
)我也尝试了\\但没有用。你错过了一个\(因为它需要转义,它应该是
\$1
)我尝试了\\但没有用。
echo preg\u replace(“~([^A-Za-z0-9]),“\\$1”,$mystring)如果不想在空格前添加\的话。
echo preg\u replace(“~([^A-Za-z0-9]),“\\$1”,“$mystring”)如果不想在空格前添加\的话。