对作为查询追加到URL的文本字符串进行编码

时间:2018-04-26 作者:ConM

我有一个目前正在使用的短代码,它在选定的产品页面上嵌入了一个按钮。单击此按钮后,用户将进入另一个页面上的联系人表单,并且单击此按钮的产品标题将作为查询字符串附加到联系人表单URL的末尾。然后从查询字符串中收集此产品标题,并自动填充到联系人表单上标记为“products”的字段中。

代码如下:

add_shortcode( \'dynamic_contact_button\', \'button_product_page\' );

function button_product_page() {
global $product;
return "href=\'/contact-form/?products=Product:%20" .$product->get_title(). "&#contact_form\'";
}
这将创建一个URL,例如:

https://www.example.com/contact-form/?products=Product: Brown Paint - 1L&#contact_form
它工作得很好。。。直到产品标题包含无法附加到查询字符串的“不安全”字符。例如,撇号字符\' 为了在产品标题中以英尺为单位表示度量值,查询字符串将被剪切,其中一个字符串出现,这意味着只有部分产品标题被带入表单。我确信还有许多其他不安全的字符会导致类似的问题。

有什么我可以添加到这里的代码编码的产品名称文本被附加。。。因此,空格变为20,撇号变为27,等等。我看到PHP中有一个urlencode选项,但我对如何实现它缺乏理解

2 个回复
最合适的回答,由SO网友:John Zenith 整理而成

要对URL进行编码,可以使用PHPurlencode( $url ) 功能或使用WordPressurlencode_deep( $array | $str ); 作用

add_shortcode( \'dynamic_contact_button\',    \'button_product_page\' );

function button_product_page() {
    global $product;
    return urlencode( "/contact-form/?products=Product:%20" .$product->get_title(). "&#contact_form" );
}
链接:

WordPress - urlencode_deep

urlencode

SO网友:Tom J Nowell

这个urlencode() 函数是您的朋友,它是一个标准PHP函数,可以将字符串编码为URL有效格式

结束