问题描述
|
我遇到错误
解析错误:语法错误,意外的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;
...
解决方法
由于反斜杠用于转义字符,因此您不小心在转义单引号前加了反斜杠来转义。尝试将所有反斜杠变成双反斜杠,例如
$szContentRoot = \'d:\\\\websites\\\\lycos\\\\Alpha_Pourri\\\\\';
, 反斜杠从技术上讲是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;
有关此的更多信息,您可以参考有关字符串的手册条目:
要指定文字单引号,
用反斜杠()进行转义。至
指定文字反斜杠,将其加倍
(\\)。 ...
, $szContentRoot = \'d:\\websites\\lycos\\Alpha_Pourri\\\';
\\
转义为单引号\'
,因此字符串不止于此。转义反斜杠
$szContentRoot = \'d:\\websites\\lycos\\Alpha_Pourri\\\\\';
足以使最后一个转义(因为它用单引号引起来)。但是,您可以将每个ѭ5替换为ѭ9。或者,您仅使用公共正斜杠“ 10”,因为Windows会将两者都接受为目录分隔符。