我有以下生成的JS代码:
var companies = [
{
name: 'foo bar',
points: [
{
latitude: 123,
longitude: 456
}
]
} , {
name: 'foo bar',
points: [
{
latitude: 123,
longitude: 456
}
]
} , {
name: 'foo bar',
points: [
{
latitude: 123,
longitude: 456
}
]
} , {
name: 'foo bar',
points: [
{
latitude: 123,
longitude: 456
}
]
} ];
是的,它很难看 - 在每一行都有额外的缩进等等。因为它将被渲染,我想用PHP删除它的空格。预期输出应为:
var companies=[{name:'foo bar',points:[{latitude:123,longitude:456}]},{name:'foo bar',points:[{latitude:123,longitude:456}]},{name:'foo bar',points:[{latitude:123,longitude:456}]},{name:'foo bar',points:[{latitude:123,longitude:456}]}];
从JS代码中删除空格的最有效方法是什么?
答案 0 :(得分:1)
在前面的答案的基础上,这看起来像你需要的正则表达式:
((?<=\=|\,|\:|\]|\[|\{|\})\s+)|(\s+(?=\=|\,|\:|\]|\[|\{|\}))|(^\s+)
在php中使用:
preg_replace('/((?<=\=|\,|\:|\]|\[|\{|\})\s+)|(\s+(?=\=|\,|\:|\]|\[|\{|\}))|(^\s+)/', '', $str);
说明:
(?<=\=|\,|\:|\]|\[|\{|\})\s+)
匹配一个或多个空格\ s +跟{} [],:=字符
(\s+(?=\=|\,|\:|\]|\[|\{|\})
匹配一个或多个空格\ s +前面{} [],:=字符
(^\s+)
匹配起始和结束空格^ \ s +
用虚无替换全部
看到它的实际效果: http://www.phpliveregex.com/p/5eS
答案 1 :(得分:0)
如果它总是json字符串,你可以使用
$json_string = json_encode($data, JSON_PRETTY_PRINT);
答案 2 :(得分:-1)
这太苛刻了,你需要在更多情况下进行测试。 更新:
<?php
$str = "var companies = [
{
name: 'foo bar',
points: [
{
latitude: 123,
longitude: 456
}
]
} //...
];";
echo preg_replace(
array(
'#\]\s+#' , '#\[\s+#' , '#\{\s+#', '#\}\s+#','#\s+\]#' , '#\s+\[#' , '#\s+\{#', '#\s+\}#' , '#\,\s+#' , '#\:\s+#','#\s+\,#' , '#\s+\:#'),
array(
']' , '[' , '{', '}' ,']' , '[' , '{', '}' , ',' , ':',',' , ':'), $str);