PHP/WordPress出现Unmatched }错误,未找到不匹配大括号
解决PHP报错'Unmatched }'的方案
修复短标签语法问题:你代码里用了
<? foreach (...)这种短标签写法,若PHP版本变更后禁用了short_open_tag配置项,PHP会把<?当作普通HTML文本,不解析后续PHP代码,直接导致大括号逻辑混乱,触发不匹配报错。把所有<?替换成<?php即可解决核心问题。验证ACF字段返回格式:确认
get_field('related_projects')返回的是数组类型。如果自定义文章的字段配置被意外修改,返回单个对象而非数组,foreach循环会引发解析异常,间接导致大括号匹配报错。可在代码开头加var_dump($relatedProjects);调试输出,确认返回值是否符合预期。
修改后的代码(替换短标签):
<div class="right"> <?php $relatedProjects = get_field('related_projects'); if ($relatedProjects) { ?> <h3>Gerelateerde <span>werken.</span></h3> <div class="wrap"> <?php foreach ($relatedProjects as $relatedProject) { ?> <a href="<?php echo get_the_permalink($relatedProject); ?>" class="item"> <div class="image"> <?php $related_id = $relatedProject->ID; echo get_the_post_thumbnail($related_id, 'medium' ); ?> <div class="subtitle"><?php echo get_the_title($relatedProject);?> </div> </div> </a> <?php } } ?> </div>
另外,PHP版本升级是常见触发因素:新版PHP默认禁用短标签,这会直接破坏依赖短标签的旧代码。若不想修改代码,也可在php.ini中将short_open_tag设为On,但更推荐统一用<?php标签保证跨版本兼容性。
内容的提问来源于stack exchange,提问作者Jeroen
相关产品推荐
相关产品推荐

