1

私は次のように変数に値を持っています...

$variable = "chicken soup.jpg";

次のようにすると、出力でスペースが+記号に変換されます

$body = "www.abc.com/" . $variable
mail($to, $subject, $body,$headers)

受信したメールでの出力:www.abc.com/chicken+soup.jpg

しかし、私は以下のような出力が欲しいですか?助けてください

期待される出力:www.abc.com/chicken%20soup.jpgまたはwww.abc.com/chicken soup.jpg

str_replace関数を使用してみましたが、うまくいきませんでした

4

3 に答える 3

3

あなたの電子メールクライアントがそのメッセージのプレーンなソースを表示することをサポートしているなら、あなたはURLが"www.abc.com/chicken soup.jpg";であると確信するでしょう。無効なURLであるため、ブラウザ/電子メールクライアントのみがエンコードします。

有効なURLを作成する場合は、次のコマンドを使用して手動でエンコードします。

$body = 'www.abc.com/' . urlencode( $variable );
// this will be 'www.abc.com/chicken+soup.jpg' as this is a valid url

また:

$body = 'www.abc.com/' . rawurlencode( $variable );
// this will be 'www.abc.com/chicken%20soup.jpg'

編集

あなたは違いについてもっと読むことができます:

  • RFC 3986エンコーディング(rawurlencode()
  • application/x-www-form-urlencoded(またはフォームポスト)エンコーディング(urlencode()
于 2012-11-17T12:17:18.723 に答える
2

あなたの解決策はurlencode()、filename変数で使用することです。これにより、スペースやその他のURLに対応していない文字が、有効なURLの一部として使用できるように%20などに変換されます。

$variable = urlencode("chicken soup.jpg"); echo $variable;

出力

chicken%20soup.jpg

詳細については、urlencode()のドキュメントを確認してください。

于 2012-11-17T12:12:52.823 に答える
0

これは、すべてのURLがエンコードされているためです。電子メールクライアントが「chickensoup.jpg」を受信した可能性がありますが、それをurlとして解析するため、urlの「」が無効であるため「chicken+soup.jpg」を取得します。

于 2012-11-17T12:07:53.587 に答える