很多社区都有一套所谓的关键词审查制度。PHPBB、Discuz等社区软件,是把帖子中出现的”不雅词汇”替换成星号或者别的什么符号,这虽然会让我们经常看到” @*天*地*大家@ “或者” @依*@ “这样的火星词,但至少,还能看到。
在天涯却又是另外一番情况。如果帖子里有”违禁词汇”的话,一般就会发不出去,偶尔的,虽然发出去了,但却会得到一个提示,声明因为文中含有违禁词汇,需要经过人工审查方能出现云云。
某种程度上来说,天涯这种特色文化也是有好处的,至少,有助于发扬我们古文中通假字的传统,有时候,还能看到词字的倒置用法。前段时间carrefour话题沸扬的时候,爱青们的文章里充斥着”嘉乐福”、”福乐家”、”乐家复”,如此种种。我曾为此嘲笑一位朋友说:可叹楼上的小岛兄,爱国也爱到被删帖的地步了–怕是别人还不乐意要你爱罢。
只是,发帖总要几次三番修改可能的过滤词,却还是发布出去–那些过滤词的名单是全然未知的。这种行为和自宫也没太大差别,想到这一点就让人心头抑郁。
于是写了 “text2img”:http://efrees.com/text2img 这么一个东西,把文本转成一张图片,发帖时不惮麻烦,以图片附件形式发布。
h3. 文字写入图片
$im = imagecreatetruecolor($width,$height); //创建指定尺寸的图片
imageantialias($im,false); //取消防锯齿功能
$white = imagecolorallocate($im, 255, 255, 255); //白色
$textcolor = imagecolorallocate($im, 0, 0, 0); //黑色
imagefilledrectangle($im,1,1,$width-2,$height-2,$white); //用白色填充图片,并留下1px黑色边框
imagefttext($im,$font_size,0,$left_margin, $top_margin,$textcolor,$font_file,$text);//写入文字
h3. 文本换行
在把文字写入图片的时候,并不会自行的按照图片宽度来给文本换行,所以需要先自己给文本换行。
基本的思路是,按设置好的行宽来切分每一行。
如果全是中文字符可以用 @str_split($line,$maxlen*3)@ ,但多数情况下,文本里会有英文或半角字符。还是使用MSF比较安全。
$maxlen=50;//设置最大行宽50个字
DEFINE(’EC’,'UTF-8′) ;
$lines=explode("\r\n",$text);//把文本按行切开
$newlines=array();
foreach ($lines as $line) {
$line=preg_replace("!^[ ]+!"," ",$line); //移除行首重复的空格
$newlines = array_merge($newlines,mb_str_split($line,$maxlen,EC));
}
$text=implode("\r\n",$newlines);
MSF没有str_split的对应函数,需要自己写一下
function mb_str_split($text,$split=1,$encoding=’UTF-8′) [...]