7

以下のコードを使用して画像の src パスを抽出します。しかし、画像のファイル名に特殊文字が含まれていると問題が発生します (例:~ DQBTZ_UC(G@STWO_1R2U_Q4.gif)、出力は次のようになります:~ 6Z6W4%255BO29FQ%255BA4YN_% 255BFR9%2529M.gif

この問題を解決するにはどうすればよいですか? 下手な英語でごめんなさい。

function _get_imagepath($content){

    $doc = new DOMDocument();
    $doc->loadHTML($content);
    $imagepaths=array();
    $imageTags = $doc->getElementsByTagName('img');
    $folder=file_directory_path();
    foreach($imageTags as $tag) {

        $imagepaths[]=$tag->getAttribute('src');
    }

    if(!empty($imagepaths)){

        return $imagepaths;
    }else{

        return FALSE;
    }

}
4

3 に答える 3

10

ファイル名が URL エンコードされているようです。http://php.net/manual/en/function.urldecode.phpをご覧ください。

すなわち:

foreach($imageTags as $tag) {
    $imagepaths[]=urldecode($tag->getAttribute('src'));
}
于 2012-11-06T08:37:41.390 に答える
0

エンコードされた URL を取得します。

使用したいurldecode

指定された文字列の %## エンコーディングをデコードします。プラス記号 ('+') はスペース文字にデコードされます。

PHP マニュアルの urldecode()

于 2012-11-06T08:37:18.927 に答える
0

交換

return $imagepaths;

return urldecode($imagepaths);

画像の URL をデコードします。

于 2012-11-06T08:39:26.393 に答える