Docomo+xhtmlだとアンカータグがウザい件。
いや初めて知ったんですが、Docomoでxhtmlだと、ページ内リンクが以下の書き方だと動かないんですね。
<a href="#a">goto a</a> hogehoge <a name="a"></a>
なんと指定先として、nameプロパティじゃなく、idプロパティを使わないといけないという。
<a href="#a">goto a</a> hogehoge <a id="a"></a>
まあ、これならこういう風に書けばいいじゃん、って思うんですが、
<a href="#a">goto a</a> hogehoge <a id="a" name="a"></a>
これはコレでauで問題があるらしいですよ!(事実確認してませんが)アホか!
さらに、個人的な理由として、MceEditorでアンカーを指定すると、nameにしか入れてくれないので(まあ普通そうだよね)、これをどうにかせんといかん、ということで。
まあ、やる事は、aTagの時だけ、idとnameを入れ替えるだけの簡単なお仕事ですけど、これは正規表現で書く場合、例外を考えると死ねる。
ということで、最近好きなPHPでのDOM操作でやりました。
$content = 'ここにHTMLがあるとおもえばいいよ'; $errbefore = error_reporting();//DomDocument はエラーをだしまくるので、一時的にオフ error_reporting(0); //DOM オブジェクト作成 $document = new DOMDocument(); $document->recover = 1; $document->loadHTML($content); //DOM エレメント取得 $elms = $document->getElementsByTagName('a'); //エレメントをグルグル処理 foreach($elms as $elm) { if( $elm->hasAttribute('name') ) { // name プロパティが指定されていれば $elm->setAttribute('id', $elm->getAttribute('name')); //IDにつっこんで、 $elm->removeAttribute('name'); // nameプロパティを消す。 } } //元の変数にHTMLを書き戻す $content = $document->saveHTML(); error_reporting($errbefore);// エラーレポートを復活
こんなコードで変換したらどうか、という話でした。