私はこの関数を書きましたが、$dom
. 属性を設定した後に属性を確認すると、正しいのですが、最終的な保存にはなりません。
function tj_add_alts( $content ) {
$dom = new DOMDocument();
$dom->loadHTML($content);
foreach ($dom->getElementsByTagName( 'img' ) as $node) {
if ( trim( $node->getAttribute( 'alt' ) ) == "" ) {
$img = $node->getAttribute( 'src' );
$file_name = pathinfo($img, PATHINFO_FILENAME);
$name = preg_replace( '/[^A-Za-z0-9 ]/', ' ', $file_name);
$name = preg_replace( '/\s{2,}/', ' ', $name);
$node->setAttribute( 'alt', $name );
}
}
$content = $dom->saveHTML();
return $content;
}
更新: 問題は、DomDocument がdoctype
宣言と<body>
タグを自動的に追加することであると思われますが<head>
、これは望ましくありません。それらに乗る方法はありますか?