web-dev-qa-db-ja.com

URLへのクエリとして追加されるエンコードテキスト文字列

私は現在選択されている製品ページにボタンを埋め込むために現在使用中のショートコードを持っています。このボタンをクリックすると、ユーザーは別のページの連絡先フォームに移動し、ボタンがクリックされた場所の製品のタイトルが問い合わせ文字列として連絡先フォームのURLの末尾に追加されます。この商品のタイトルは、クエリ文字列から収集され、連絡先フォームの「商品」というラベルの付いたフィールドに自動入力されます。

次のようにコーディングしてください。

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
ConM

URLをエンコードするには、PHP urlencode( $url )関数またはWordPress urlencode_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" );
}

リンク集

ワードプレス - urlencode_deep

URLコード

4
John Zenith

url_encode関数はあなたの友人です、それは文字列をURL有効なフォーマットにエンコードする標準的なPHP関数です

2
Tom J Nowell