如何将带有中断规则的字符串添加到 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_encode
将 PHP 数组编码为 JSON string 而不是创建一个奇怪的字符串数据,就像你在这里做的那样:
$shops = $shops . "['".$title."','".$phone."','".$address."'],";
之后,在您的 JavaScript 代码中,您也可以使用 JSON.parse()
以数组形式检索数据。
如果你想在 PHP 和 JavaScript 之间传输数据,我建议使用 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):
如您所见,它是一个包含我们预期数据的数组。
所以,就这么简单。您可以复制上面的代码并进行更改,使其适合您的需要。干杯!
我正在 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_encode
将 PHP 数组编码为 JSON string 而不是创建一个奇怪的字符串数据,就像你在这里做的那样:
$shops = $shops . "['".$title."','".$phone."','".$address."'],";
之后,在您的 JavaScript 代码中,您也可以使用 JSON.parse()
以数组形式检索数据。
如果你想在 PHP 和 JavaScript 之间传输数据,我建议使用 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):
如您所见,它是一个包含我们预期数据的数组。
所以,就这么简单。您可以复制上面的代码并进行更改,使其适合您的需要。干杯!