2010年2月15日

[PHP-users 35000] Re:htmlタグの<と単なる<の区別

うすきです。

> うまい正規表現を考えれば、タグをとりのぞくことができるでしょうか?

ちょっと作ってみました。

$test = '<table summary="2>1" id="2>1" target="2>1">';
// ↓受け付けるタグ

if (preg_match('/<(a|table)((?:\s+[\w\-]+="[^"]*")*)>/', $test, $mch)) {
$nodeName = $mch[1];
$attributes = isset($mch[2])? $mch[2] : "";
$attributes = preg_replace_callback(
'/\s+(\w+)="([^"]*)"/', 'atrconv', $attributes
);

// テスト出力
echo '<pre>';
echo htmlspecialchars("<$nodeName$attributes>");
echo '</pre>';
}
function atrconv($mch) {
// ← 許可するタグと属性のチェック処理・サニタイズ
return " ". $mch[1].'="'. htmlspecialchars($mch[2]) .'"';
}

// 結果
<table summary="2>1" id="2>1" target="2>1">

HTML開きタグのみですが、こんな感じでブラッシュアップしていって、繰り返せ
ばある程度までは簡単にいけるかも知れません。
再帰的にパースを行わないので、開きと閉じの対応や入れ子不良等は、筆者側の
責任でちゃんとやって貰う必要があります。


> に話がもどってしまいます。そうすると、校正ミス、校正もれが起こる可能性が
> あり避けたいのです。

これについては萩原さんのいわれているとおり、Wikiを採用するのが最適なよう
な気がします。ソース状態の可読性はHTMLより良いと思いますので。

--

--------
uju
--------------------------------------
VANCOUVER 2010 Olympic News [Yahoo! Sports/sportsnavi]
http://pr.mail.yahoo.co.jp/olympic/
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年2月15日 03:53
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/93327
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。