You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将带换行符的字符串加入PHP数组以供Javascript使用

问题核心原因

  • 你使用的get_field是WordPress ACF插件的方法,字段内的换行默认会被自动转换为<br />(带空格的闭合标签),你之前的替换规则只覆盖了<br>,没有匹配所有变体所以失效
  • 手动拼接JS字符串的方式本身存在极高风险,除了换行,内容中的单引号、特殊字符都会直接破坏JS数组的语法结构

最优解决方案(推荐)

完全不需要手动拼接字符串,直接用PHP内置的json_encode()方法处理即可,它会自动把所有换行、引号、特殊字符转义为符合JS语法的格式,从根源避免结构破坏问题。

示例代码如下:

<?php
// 初始化PHP数组存储门店数据
$shops = [];
while ( $loop->have_posts() ) : $loop->the_post(); 
    $shops[] = [
        get_the_title(),
        get_field('phone'),
        get_field('address')
    ];
endwhile;
wp_reset_query();
?>

<!-- 直接输出给JS变量即可,json_encode的结果本身就是合法的JS语法 -->
<script>
const shops = <?php echo json_encode($shops); ?>;
</script>

手动拼接的修复方案(不推荐)

如果一定要沿用手动拼接的写法,需要补全替换规则,同时对所有字段的单引号做转义:

<?php while ( $loop->have_posts() ) : $loop->the_post(); 
    $title = addslashes(get_the_title());
    $address = get_field('address');
    // 覆盖所有br标签变体和换行符
    $address = str_replace(["\r", "\n", "<br>", "<br/>", "<br />"], '', $address);
    $address = addslashes($address);
    $phone = addslashes(get_field('phone'));

    $shops = $shops . "['".$title."','".$phone."','".$address."'],";
endwhile; wp_reset_query(); ?>

内容的提问来源于stack exchange,提问作者Dennis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:09:03