PHP中空格字符的转义序列

时间:2012-01-24 18:21:55

标签: php escaping

目前我正在使用下面的代码段,它使用多个空格字符缩进生成的HTML:

add_filter('get_search_form', 'filter_search_form');

function filter_search_form($form) {
    $form = '      <form role="search" method="get" id="searchform" action="' . home_url('/') . '"><input type="text" placeholder="' . __('Search') . '" value="' . get_search_query() . '" name="s" id="s"><input type="submit" id="searchsubmit" value="' . esc_attr__('Search') . '"></form>' . "\n";
    return $form;
}

现在我一直在阅读一些关于空格字符的内容(\t用于制表符,\n用于换行符等等),但我不完全确定如何在这种情况下实现这一点。 我已经尝试将\s用于单个空间,但没有任何运气。

相对较新的PHP,我希望你能提供帮助(最好不要使用'常规'空格字符)。

3 个答案:

答案 0 :(得分:3)

根据http://php.net/manual/en/regexp.reference.escape.php,一般十六进制转义序列\x20应该有效,\040(八进制)也应如此。

但就个人而言,我没有看到以这种方式指定空格的好处(如果有的话),因为它会使你的代码更不易读,恕我直言。只需在你的单引号或双引号中加入文字空格(就像你现在一样)并完成它。

或者,如果您尝试使用空格来缩进生成的HTML代码(就像您看到的那样),那么以\t为单位这样做并不是世界末日。

答案 1 :(得分:2)

\t\n等字符需要用双引号...

$string = "\t" . '<form></form>';

答案 2 :(得分:1)

如果要在其前面插入标签,可以使用:

$string = "\t" . '<form>....';

(不要忘记双引号,单引号不能与\ t,\ n和朋友一起使用!)

如果你想要空格,只需使用空格!

$string = "        " . '<form>....';

这是HTML代码,因此它们将出现在您网页的源代码中。它们不会“折叠”成一个空间。