使用此代码我删除字符串中的每个空格。
public function callback_register_settings_remove_spaces( $input ) {
// New Input
$new_input = array();
$new_input = $input;
// Sanitize the input actually
$new_input = preg_replace("/\s+/", " ", $new_input);
// Sanitize the input actually
$new_input = str_replace(" " , "" , $new_input);
return $new_input;
}
但是,如果字符串中存在这样的子字符串,我需要NO REMOVE空格:
<script async src
所以,如果初始字符串是:
<script async src="http">Bla.js</script>
<script>window.dataLayer = window.dataLayer;</script>
需要:
<script async src="http">Bla.js</script><script>window.dataLayer=window.dataLayer;</script>
而不是
<scriptasyncsrc="http">Bla.js</script><script>window.dataLayer=window.dataLayer;</script>
谢谢
答案 0 :(得分:0)
然后删除换行符?
编辑:啊!没有看到你&#34; =&#34; -sign附近的空格。 对于换行,这仍然有效。在你的情况下,它可能不会。遗憾!preg_replace( "/\r|\n/", "", $yourString );
答案 1 :(得分:0)
某种语法分析器在这里会很好。
以下是一种可能性(一种非常粗糙的)的快速示例:
function minimizeJs($value)
{
$output = '';
$i = 0;
// Iterate thru all TAGs by starting <
while (($o = strpos($value, '<', $i)) !== false) {
// There's a match between two TAGs, strip spacing
if ($i < $o) {
$output .= preg_replace('/\s+/', '', trim( substr($value, $i, $o - $i) ));
}
// Find end of this current TAG (>)
$i = strpos($value, '>', $o) + 1;
// Concat the TAG content
$output .= substr($value, $o, $i - $o);
}
return $output;
}
此示例适用于数据以TAG开头并以TAG结尾的特殊情况。如果用于其他情况,则需要在匹配前后解析数据。
编辑:如果JS包含&lt;这将爆炸或&gt;。
答案 2 :(得分:-1)
您可以使用trim()
,在此处http://php.net/manual/pt_BR/function.trim.php查看相关内容,您可以使用ltrim()
删除左侧空格并rtrim()
添加。{/ p>