我的目的是,显示 dir 的执行结果
我不明白,为何 反斜杠 放在最后,就必须要转义,但是在c:后面的这个反斜杠就不需要转义。即
"c:\\windows"

"c:\windows"
是相同的,但是
"c:\windows\"

"c:\windows\\"
就不相同,前者报错,后者正确,为什么呢?
同样都是反斜杠,放在不同的地方,要求会不一样呢?<html>
<?php
$out=`dir c:\windows\\`;
echo "<pre>" . $out . "</pre>"
?>
</html>

解决方案 »

  1.   

    问题是
    c:\
    这个 \ 是不会被转义的,所以我不明白。
    “c:\\windows”,这样我能理解,因为 \\ 才表示 \
    但是
    “c:\windows”
    我就不理解了,
    因为 \ 本身是转义字符呀?
      

  2.   

    转义字符应该不是所有地方都是转义字符!!!"c:\windows"    \ 是普通字符"c:\\windows"   应该也不算转义字符吧,应该是php对路径的特别要求"c:\\windows\"" 第三个 \ 是 " 的转义字符
      

  3.   


    那请教一下,什么情况下,\会当成是转义字符,什么情况下,\会当成是普通字符呢?“c:\\windows”

    “c:\windows”
    php认为是一样的,至少这一点我就很不理解,一个字符能有二义性吗?
    同一个位置,既可以当成普通字符处理,也可以当成转义字符处理?请再指教。
      

  4.   


    转义符“\”出现在任何可能存在二义性的地方
    "c:\windows" 在早期的php中是错误的,要写作 "c:\\windows"
    但php毕竟是很人性化的语言,当他感知到作为Windows路径符的“\”时,并不要求你一定要书写转义符
    但这只是为了迎合Windows程序员的习惯而已为了让程序代码具有跨平台能力,php中的路径符还是用“/”为好,并且不要有盘符。尽管你只打算将你的代码运行在Windows环境中
      

  5.   

    <?php
    $a=Array(
    'c:\windows',
    'c:\windows\\',
    'c:\\windows',
    'c:\\windows\\');
    print_r($a);
    ?>
    输出:
    Array
    (
        [0] => c:\windows
        [1] => c:\windows\
        [2] => c:\windows
        [3] => c:\windows\
    )
    可参考C/C++的转义符资料:
    转义字符 意义 ASCII码值(十进制) 
      \a 响铃(BEL) 007 
      \b 退格(BS) 008 
      \f 换页(FF) 012 
      \n 换行(LF) 010 
      \r 回车(CR) 013 
      \t 水平制表(HT) 009 
      \v 垂直制表(VT) 011 
      \\ 反斜杠 092 
      \? 问号字符 063 
      \' 单引号字符 039 
      \" 双引号字符 034 
      \0 空字符(NULL) 000 
      \ddd 任意字符 三位八进制 
      \xhh 任意字符 二位十六进制 
      

  6.   

    这么说,php的作者,向错误 的写法让步了。
      

  7.   

    "C:\windows"里\w没有意义,等价于C:windows
    c:windows很多情况下是算合法的路径
      

  8.   

    原来php中与c++中处理转义字符的方式不同,
    在c++中,只要是\后面的字符,就会被转义,
    但是php不同,只有有限的几个特别字符会被转义,这几个特殊字符外,是不会被转义的,即转义字符会被忽略.这一点不同,对我造成了疑惑