4

PHP で画像フォルダをスキャンして、画像 URL の配列を取得します。一部の画像ファイル名に空白が含まれています。空白の後の部分が失われました。例: このファイルは問題ありません:

http://domain.com/folder/blue-sky.png

このファイルでは、sky.png の部分が失われます。

http://domain.com/folder/blue sky.png

フォルダーをスキャンするための私のコードは、ファイル名の確認や操作とは何の関係もありません。blue sky.pngに名前を変更せずにフルネームを取得するにはどうすればよい blue-sky.pngですか?

4

3 に答える 3

18

URL エンコーディングのスペースは文字列 "%20" で表されるため、str_replaceを使用して " " 文字のすべてのインスタンスを文字 "%20" に置き換えることができます。

echo str_replace(' ', '%20', 'http://domain.com/folder/blue sky.png');

出力します

http://domain.com/folder/blue%20sky.png

補足情報

また、私はそれを自分で使用したことはありませんが、もし私があなただったら、php 関数urlencodeを調べます。有用な情報が含まれている可能性があります。

注 : URL エンコードは、文字列の標準ではないすべての文字を変換します (そのため、画像名である文字列にのみ urlencode を使用することをお勧めします)

于 2012-07-31T14:37:31.520 に答える
1

この問題に遭遇しましたが、上記の回答を試してみたところ、本当の問題は逆コンマなしで html リンクを書いたことにあることがわかりました。通常、ブラウザーはこれを許容しますが、スペースが存在する場合は許容しません。つまり 、href="../folder/blue sky.png" の代わりに
href=../folder/blue sky.png のようなものをコーディングしてい ました。アドレスに正しい構文スペースを使用しても問題は発生しません。


于 2013-10-28T15:29:36.287 に答える
0

正規表現を使用できます。

試す;

$file_name = "http://domain.com/folder/blue sky.png";
$file_name2 = preg_replace("/ /", "-", $file_name);
echo $file_name2; //echos http://domain.com/folder/blue-sky.png

お役に立てれば...

于 2012-07-31T14:40:14.800 に答える