【问题标题】:php nested quotes errorphp嵌套引号错误
【发布时间】:2013-02-14 11:32:02
【问题描述】:

我需要你的帮助来修复那些向我返回错误的报价:

解析错误:语法错误,意外的 T_CONSTANT_ENCAPSED_STRING

这是我的代码:

$HTML_footer.='<option value="general" '($sr && ! $cf['form_ok'] && $cf['posted_form_data']['enquiry'== 'Ventes']) ? "selected='selected'" : ''  '>general</option> ';

【问题讨论】:

  • 你怎么知道是这条线的错误?
  • @Akram - 可能是因为 PHP 行无效
  • 我知道错误来自这一行,因为如果有这个:解析错误:语法错误,D:\inetpub\wwwroot\starter\2.0\web_inc\php\web.php 中的意外 T_CONSTANT_ENCAPSED_STRING第 855 行
  • 您忘记了连接运算符:. 或此处的“点”:general" '($sr al" '.($sr

标签: php nested quotes


【解决方案1】:

请使用以下代码

$value = "";
if($sr && ! $cf['form_ok'] && $cf['posted_form_data']['enquiry'== 'Ventes']){
$value = "selected='selected'";
}


$HTML_footer.="<option value='general' $value>general</option> ";

【讨论】:

  • 我认为这是一个错字,你添加了一个额外的')'
  • 谢谢桑迪普。根据您的建议编辑答案。
【解决方案2】:

T_CONSTANT_ENCAPSED_STRING 解析器令牌错误是由于意外引用或缺少引用而发生的。首先检查条件是否满足,然后以这种方式选择它:

 if ( $sr && (!$cf['form_ok']) && ($cf['posted_form_data']['enquiry' == 'Ventes'])) {
    $HTML_footer = "<option value='general' selected='selected'>general</option> ";
 }

希望对你有帮助!

【讨论】:

    【解决方案3】:

    你错过了你试图连接在一起的各种字符串之间的点。 PHP 使用点作为连接字符串的运算符。

    另外,三元运算符需要用括号括起来,以防止它产生歧义。

    通过这些更正,您的代码行现在如下所示:

    $HTML_footer.='<option value="general" ' . (($sr && ! $cf['form_ok'] && $cf['posted_form_data']['enquiry'== 'Ventes']) ? "selected='selected'" : '') . '>general</option> ';
    

    但是一个建议:尝试将三元运算符从字符串中移出到单独的代码行中。这样会更易读:

    $isSelected = ($sr && ! $cf['form_ok'] && $cf['posted_form_data']['enquiry'== 'Ventes']);
    $selected = $isSelected ? "selected='selected'" : '';
    $HTML_footer.='<option value="general" '.$selected.'>general</option> ';
    

    仍然不是很好的可读性,但比以前好多了。

    【讨论】:

    • 我没有投反对票(也不知道为什么这被投反对票),但三元不必用括号括起来,尤其是你正在做的方式。 $foo = 'bar '. $bar === true ? '!' : '?'.'&lt;br/&gt;'; 完全有效:[expression] ? [expression] : [expression] 是解析器正在寻找的,这些部分可以不用括号来区分
    • @EliasVanOotegem - 我最近收到了一些“路过投票”。当人们投反对票但不愿意解释时令人失望。关于歧义,就我而言,最后的 '&gt;general&lt;/option&gt;' 部分存在歧义,它是主字符串的一部分还是三元错误条件的一部分:''.'&gt;gen..' 是一个表达式,所以是这都是三元的一部分吗?但是解析器是否有问题在某种程度上是无关紧要的,因为代码还需要对将来从事它的人来说是可读的。可读性=可维护性。
    猜你喜欢
    • 2011-05-18
    • 1970-01-01
    • 2011-10-04
    • 2014-02-03
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    相关资源
    最近更新 更多