【发布时间】:2011-06-13 11:28:46
【问题描述】:
我需要一个反斜杠作为字符串的一部分。我该怎么做?
【问题讨论】:
标签: php
我需要一个反斜杠作为字符串的一部分。我该怎么做?
【问题讨论】:
标签: php
当反斜杠 \ 没有转义字符串的终止引号或以其他方式创建有效的转义序列(在双引号字符串中)时,则其中任何一个都可以生成一个反斜杠:
$string = 'abc\def';
$string = "abc\def";
//
$string = 'abc\\def';
$string = "abc\\def";
当转义下一个字符会导致解析错误(字符串的终止引号)或有效的转义序列(在双引号字符串中)时,需要对反斜杠进行转义:
$string = 'abcdef\\';
$string = "abcdef\\";
$string = 'abc\012';
$string = "abc\\012";
【讨论】:
简答:
使用两个反斜杠。
长答案:
有时您可以使用一个反斜杠,但有时您需要两个。何时可以使用单个反斜杠取决于两件事:
如果你有一个双引号字符串,反斜杠在许多情况下被视为转义字符,所以最好总是用另一个反斜杠来转义反斜杠:
$s = "foo\\bar"
在单引号字符串中,反斜杠将是文字,除非它们后跟单引号或另一个反斜杠。因此,要输出带有单引号字符串的单反斜杠,您通常可以这样写:
$s = 'foo\bar'
但是要连续输出两个反斜杠,你需要这样:
$s = 'foo\\\\bar'
如果你总是使用两个反斜杠,你永远不会错。
【讨论】:
if( !preg_match( '/^[\\\,.\d\pL]*$/u', $_POST['some_text'] ) ) { ... } 所以为了逃避反斜杠我不得不使用 3 个反斜杠 \\\。尝试了一个和两个,没有工作。不明白为什么 3
您必须转义所有反斜杠,例如 "c:\\windows\\"。
【讨论】: