使用esc_url()时的换行符URL实体

时间:2017-02-21 作者:user3438958

是否可以设置换行符\\n 使用时作为URL实体esc_url()? 换行符的URL实体为%0A 如上所述:https://stackoverflow.com/questions/3871729/transmitting-newline-character-n

但是esc_url()%0A.

感谢您的帮助。

1 个回复
最合适的回答,由SO网友:Fayaz 整理而成

背景:

WordPress删除%0A 因为一般来说,换行符在URL中没有实际用途。除非是mailto: 协议WordPress strips out %0A.

所以最好不要在URL中使用它们。

解决方案:

如果出于任何特定目的必须使用%0A, 您可以使用%250A 然后将其过滤回%0A 使用clean_url 滤器

%250A 是的URL编码版本%0A, i、 e.双URL编码版本newline.

您可以使用以下代码进行过滤(在插件或活动主题的functions.php 文件):

add_filter( \'clean_url\', \'double_encoded_nl_to_encoded_nl\' );
function double_encoded_nl_to_encoded_nl( $url ) {
    return str_ireplace( \'%250A\', \'%0A\', $url );
}
现在,这个:esc_url( "http://example.com/?q=foo%250Abar" ); 将返回http://example.com/?q=foo%0Abar.

相关推荐

How wp maps urls into files

我想了解wordpress的工作原理。我在我的主题中发现了这行代码:<?php echo get_permalink(get_option(\'Theme_search_page_id\')) ?> 如果我从mysql获得该选项,我会收到:mysql> select * from wp_options where option_name=\'Theme_search_page_id\'; +-----------+----------------------------