前回の質問で「
xmlの中にAタグがあった場合、属性にtarget="_blank"を付与する方法」を質問させて頂き、下記のように実装することができました。
public function get_target_blank($text) {
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($text, 'HTML-ENTITIES', 'utf-8'));
$searchNode = $dom->getElementsByTagName( "a" );
foreach($searchNode as $val) {
if($val->getAttribute("target")==""){
$val->setAttribute("target","_blank");
}
}
return $text = mb_convert_encoding($dom->saveHTML(), 'utf-8', 'HTML-ENTITIES');
}
}
その際に他のバグが発生してしまい、困っております。
バグの内容は、上記の関数を実行することで「今までxmlの中にあったPタグが消えてしまう」という事です。
今回実装した場所以外での原因を調べましたが、この関数を実行する事で消えてしまいます。
恐らくこの中が怪しいのですが、他にどのように実装すれば同じような要件を満たせるか私の知識では思いつかず、調べてもわからない状態です。
$searchNode = $dom->getElementsByTagName( "a" );
foreach($searchNode as $val) {
if($val->getAttribute("target")==""){
$val->setAttribute("target","_blank");
}
どうか意見を頂ければ幸いです。
宜しくお願い致します。
要件:
・xmlファイルの中にはaタグ以外にも、pタグやstyleタグなど入っており、
もしaタグの中に『target="_blank"』が無ければ付与する。(他の条件もありますが、ここは割愛します。
尚、aタグ以外のタグはそのまま表示。
あなたの回答
tips
プレビュー