第188行出现Parse Error: T_STRING错误,原因何在?(预期逗号或分号)
解析第188行的Parse Error原因及修复方案
这问题其实很常见,是字符串引号嵌套冲突导致的语法解析错误,我来给你一步步拆解:
先看出错的代码行:
188 echo "<tr><td><a href="edit_customer.php?nid=<? echo($row['sold_to_party_code']); ?>&page=<? echo(curPageURL()); ? >"> <img src="images/ico_edit_16.png" class="icon16 fl-space2" alt="" title="edit" />
错误根源:
你用echo "<xxx>";的双引号包裹输出内容,但里面的href="..."又直接用了双引号——PHP会把href=后面的第一个"当成整个echo字符串的结束标记!这就导致后面的edit_customer.php变成了无意义的“裸代码”,系统自然会报错说「检测到字符串,但预期逗号或分号」。
另外还有个小瑕疵:? >中间多了空格,应该是?>,不过这不是触发Parse Error的直接原因,但也需要修正。
几种修复方案:
方案1:转义内部双引号
给href属性里的双引号前加反斜杠\,让PHP识别这是字符串内部的引号,不是结束标记:
188 echo "<tr><td><a href=\"edit_customer.php?nid={$row['sold_to_party_code']}&page=" . curPageURL() . "\"> <img src=\"images/ico_edit_16.png\" class=\"icon16 fl-space2\" alt=\"\" title=\"edit\" /></a></td></tr>";
(顺便把内部的短标签<? echo(...) ?>改成了PHP变量插值/字符串拼接,因为你已经在PHP代码块里了,没必要再开短标签,代码更简洁)
方案2:外层改用单引号包裹
PHP允许单引号和双引号嵌套使用,外层用单引号的话,内部的双引号不需要转义:
188 echo '<tr><td><a href="edit_customer.php?nid=' . $row['sold_to_party_code'] . '&page=' . curPageURL() . '"> <img src="images/ico_edit_16.png" class="icon16 fl-space2" alt="" title="edit" /></a></td></tr>';
(单引号里的变量不会被解析,所以用.来拼接变量和字符串)
方案3:用HEREDOC语法(适合长HTML内容)
如果输出的HTML内容较长,HEREDOC语法会更易读,完全不用处理引号嵌套问题:
188 echo <<<HTML <tr><td><a href="edit_customer.php?nid={$row['sold_to_party_code']}&page={curPageURL()}"> <img src="images/ico_edit_16.png" class="icon16 fl-space2" alt="" title="edit" /></a></td></tr> HTML;
(注意:HEREDOC的结束标记HTML;必须单独占一行,前后不能有任何空格或字符)
最后提醒:
记得补全echo的结束分号,以及闭合对应的HTML标签(比如</a></td></tr>),避免后续出现其他渲染或语法问题。
内容的提问来源于stack exchange,提问作者curdev
相关产品推荐
相关产品推荐

