PHP解析错误来自包含驱动器路径的字符串变量

时间:2011-06-16 14:21:53

标签: php

我收到错误

  

解析错误:语法错误,意外T_STRING

在下面$szSearchDBPath的行上。好像PHP不喜欢驱动路径。

我花了几个小时谷歌搜索试图找到问题,但没有成功。

根据我的理解,单引号字符串不会被解析,应按字面解释。

有谁知道可能是什么问题?

<?php
$szHost = getcwd();
$szAddDir = "";
$g_bSaveSearch = 'True';
$szContentRoot = 'd:\websites\lycos\Alpha_Pourri\';
$szSearchDBPath = 'd:\websites\lycos\Alpha_Pourri\searches\';
$bPRODSite = 'False';
$i = 0;
...

3 个答案:

答案 0 :(得分:1)

反斜杠在技术上是PHP中的转义字符,所以你必须双重转义:

<?php
$szHost = getcwd();
$szAddDir = "";
$g_bSaveSearch = 'True';
$szContentRoot = 'd:\\websites\\lycos\\Alpha_Pourri\\';
$szSearchDBPath = 'd:\\websites\\lycos\\Alpha_Pourri\\searches\\';
$bPRODSite = 'False';
$i = 0;

有关此内容的详情,请参阅manual entry about strings

  

要指定文字单引号,   用反斜杠()来逃避它。至   指定一个文字反斜杠,加倍它   (\)。 ...

答案 1 :(得分:1)

由于反斜杠用于转义字符,因此通过在其前面添加反斜杠意外地转义结尾单引号。尝试将所有反斜杠转换为双反斜杠,例如

$szContentRoot = 'd:\\websites\\lycos\\Alpha_Pourri\\';

答案 2 :(得分:0)

$szContentRoot = 'd:\websites\lycos\Alpha_Pourri\';

\转义单引号',因此字符串不会在那里结束。逃避反斜杠

$szContentRoot = 'd:\websites\lycos\Alpha_Pourri\\';

它应该足以逃脱最后一个(因为它在单引号中)。但是,您可以使用\替换每个\\。或者您只使用公共正斜杠/,因为Windows同时接受两者作为目录分隔符。