もしあなたが大量のEUC-JPファイルを作っていたら、どうやってUTF-8へ移行するか頭を抱える事でしょう。
しかし、私はここにとてもよい解決方法を見つけました。
kanjitranslatorというフォルダ一括変換ツールです。これを使うとwikiの様なフォルダにある大量のEUC-JPファイルを一括してUTF-8へ変換できます。
もう、文字列コード変換で悩む事はありません。
2011年2月11日金曜日
2011年2月9日水曜日
サニタイズについて
Rails の場合 white list に基づいて3段階、RESTRICTED,BASIC,RELAXED
とサニタイズします。
XOOPSのコアにもこんなサニタイズのクラスが欲しいですね。
# html = Sanitize.clean(対象のhtml文字列, オプションのhash)
require 'rubygems' require 'sanitize' html = '<b><a href="http://foo.com/">foo</a></b> <img src="http://foo.com/bar.jpg" />' Sanitize.clean(html) # => 'foo'
Sanitize.clean(html, Sanitize::Config::RESTRICTED) # => '<b>foo</b>' Sanitize.clean(html, Sanitize::Config::BASIC) # => '<b><a href="http://foo.com/" rel="nofollow">foo</a></b>' Sanitize.clean(html, Sanitize::Config::RELAXED) # => '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg" />'
カスタマイズでこんな事も
Sanitize.clean(html, :elements => ['a', 'span'], :attributes => {'a' => ['href', 'title'], 'span' => ['class']}, :protocols => {'a' => {'href' => ['http', 'https', 'mailto']}})
module.textsanitizer.php 日本語のクリッカブルリンクでHTMLが壊れる件
XOOPS Cube 2.1.8 のコアの話ですが、日本語混じりだとHTMLが壊れる事があります。こんな感じで、正規表現を変えます。
/**
* Make links in the text clickable
* 2010/07/06 Y.Sakai change pattern for japanese char
* @param string $text
* @return string
**/
function &makeClickable(&$text)
{
// $patterns[] = "/(^|[^]_a-z0-9-=\"'\/])([a-z]+?):\/\/([^, \r\n\"\(\)'<>]+)/i";
// $replacements[] = "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>";
$patterns[] = "/(^|[^]_a-z0-9-=\"'\/])([a-z]+?):\/\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/i";
$replacements[] = "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>";
$patterns[] = "/(^|[^]_a-z0-9-=\"'\/])www\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i";
$replacements[] = "\\1<a href=\"http://www.\\2.\\3\" target=\"_blank\">www.\\2.\\3</a>";
$patterns[] = "/(^|[^]_a-z0-9-=\"'\/])ftp\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i";
$replacements[] = "\\1<a href=\"ftp://ftp.\\2.\\3\" target=\"_blank\">ftp.\\2.\\3</a>";
$patterns[] = "/(^|[^]_a-z0-9-=\"'\/:\.])([a-z0-9\-_\.]+?)@([a-z0-9!#\$%&'\*\+\-\/=\?^_\`{\|}~\.]+)/i";
$replacements[] = "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>";
return preg_replace($patterns, $replacements, $text);
}
登録:
投稿 (Atom)