自由入力欄に特定のHTMLタグを許可して登録することがあったので、その際の議事録です。 タグや、タグなどの属性を利用する歳は、正規表現などで属性を許可してあげて登録します。
登録する際に使用する関数
function tagKyoka($str) { $search = array('<b>','</b>','<i>','</i>','<s>','</s>','<u>','</u>','<strong>','</strong>','<br>','<br/>','<br />','<hr>','<hr/>','<hr />','</font>','</a>','"'); $replace = array('<b>','</b>','<i>','</i>','<s>','</s>','<u>','</u>','<strong>','</strong>','<br>','<br/>', '<br />','<hr>','<hr/>', '<hr />','</font>','</a>','"'); $str = str_replace($search, $replace, $str); // fontタグ $pattern = array('/<(font(?:(?: color=[\"\']?(?:")?[#0-9a-z]{1,20}[\"\']?(?:")?)?|(?: size=[\"\']?(?:")?[\d]{1,3}[\"\']?(?:")?)?)*)>/i'); $replace = array('<$1>'); $str = preg_replace($pattern, $replace, $str); // aタグ $pattern = array('/<(a(?:(?: href=[\"\']?(?:")?(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?[\"\']?(?:")?(?: target=[\"\']?(?:")?([_a-zA-Z]+)?[\"\']?(?:")?)?)?)*)>/i'); $replace = array('<$1>'); $str = preg_replace($pattern, $replace, $str); // imgタグ $pattern = array('/<(img(?:(?: src=[\"\']?(?:")?((https?|ftp)?(:\/\/)?[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?[\"\']?(?:")?)?)*)>/i'); $replace = array('<$1>'); $str = preg_replace($pattern, $replace, $str); return $str; }
登録したのを表示する際に使用する関数
function stripTags($str) { $tag = '<br><hr><b><i><s><u><strong><font><a><img>'; $str = strip_tags($str, $tag); return $str; }
登録したタグを表示する際は、表示するようの関数を呼び出して使用します。
echo stripTags($text);