ここで読んだいくつかの質問に基づいて、コンテンツをスキャンし、画像ソースタグを別のもの (サポートされている場合は特に dataURI) に置き換えようとしていpreg_replace()
ます:
// Base64 Encodes an image
function wpdu_base64_encode_image($imagefile) {
$imgtype = array('jpg', 'gif', 'png');
$filename = file_exists($imagefile) ? htmlentities($imagefile) : die($imagefile.'Image file name does not exist');
$filetype = pathinfo($filename, PATHINFO_EXTENSION);
if (in_array($filetype, $imgtype)){
$imgbinary = fread(fopen($filename, "r"), filesize($filename));
} else {
die ('Invalid image type, jpg, gif, and png is only allowed');
}
return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
}
// Do the do
add_filter('the_content','wpdu_image_replace');
function wpdu_image_replace($content) {
$upload_dir = wp_upload_dir();
return preg_replace( '/<img.*src="(.*?)".*?>/', wpdu_base64_encode_image($upload_dir['path'].'/'.\1), $content );
}
私が直面している問題wpdu_base64_encode_image($upload_dir['path'].'/'.\1)
は、基本的にpreg_replace
結果を出力していることです-現在取得しています:
Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING
$upload_dir['path']
必要な画像フォルダーへのパスを正しく出力していますが、私が試したものの、まだ達成できていないいくつかのチェックもあります。
- 画像ソースが相対的なものかどうかを確認し、そうであれば、ドメインを削除します (現在、
site_url()
必要があると想定しているドメインを使用して実行できますpreg_replace()
か?) - 画像がサーバーに対してローカルでさえない場合(繰り返しますが、
site_url()
チェックを使用していると仮定しています)、スキップしてください
preg_replace()
誰かに提案があれば、私はよく知りません。本当に感謝しています。ありがとう!
編集:代わりにhttp://simplehtmldom.sourceforge.net/を使用する必要がありますか? かなり重いハンマーのように思えますが、それがより信頼できる方法であるなら、私はそれで十分です - 誰かが以前にそれを使用したことがありますか?