如何将带有中断规则的字符串添加到 PHP 数组以在 Javascript 中使用

How to add a string with breakrule to a PHP array to use in Javascript

我正在 PHP 中构建一个数组,以便在我的 Javascript 代码中使用它。所以我遍历所有帖子 (Wordpress) 并将所有值推送到一个字符串 - 这是 Javascript 数组:

<?php while ( $loop->have_posts() ) : $loop->the_post(); 
    $title = get_the_title();
    $address = get_field('address');
    $phone = get_field('phone');

    $shops = $shops . "['".$title."','".$phone."','".$address."'],";

    echo $shops; // for testing.
endwhile; wp_reset_query(); ?>

地址的输入是街道、数字 BREAKRULE 邮编和城市。示例:

Sint Pieterskaai 39
8000 Brugge

并且该特定的中断规则会中断字符串以用作 Javascript 中的数组。 这是 HTML 输出的屏幕截图:

大家可以看到门牌号后面有一个<br>

我已经尝试用这个替换 $address 变量,但没有任何运气:

$address = str_replace(array("\r", "\n", "<br>"), '', $address);

正如@u_mulder 在他的评论中所说,使用 json_encodePHP 数组编码为 JSON string 而不是创建一个奇怪的字符串数据,就像你在这里做的那样:

$shops = $shops . "['".$title."','".$phone."','".$address."'],";

之后,在您的 JavaScript 代码中,您也可以使用 JSON.parse() 以数组形式检索数据。 如果你想在 PHPJavaScript 之间传输数据,我建议使用 AJAX代替inserting/echoing数据直接到DOM.

这样您的数据将更加安全,并且无法直接在标记上找到。 有关它的更多信息,请参阅此 post:

如果您仍然喜欢这样做,那么我为您准备了一个简单的示例:

在 PHP 你有:

<?php

$PHParray = ['Foo','Bar','Baz'];    //creating our Array in PHP - I assume you know how to do this in at least two ways :)

//adding values to our Array (you can use array_push or other method if you want)
$PHParray[] = 'Quo';
$PHParray[] = 'Vadis';

/*
... rest of the code ...
*/

//converting array to JSON string and adding it to the DOM of our site
echo '<div id="our-data" style="display: none;">'.json_encode($PHParray).'</div>';
?>

然后你的 HTML 和 JavaScript:

<!DOCTYPE HTML>
<html>
<head>

    <script>
        let dataDiv = document.getElementById("our-data"),  //getting element created earlier in PHP that contains our data as JSON string
            JSarray = JSON.parse(dataDiv.innerText);        //creating an Array from the JSON string
        dataDiv.remove(); //removing this element from the DOM after fetching data

        console.log(JSarray);
    </script>

</head>
<body>

</body>
</html>

控制台输出(我用的是Google Chrome):

如您所见,它是一个包含我们预期数据的数组。

所以,就这么简单。您可以复制上面的代码并进行更改,使其适合您的需要。干杯!