英数字も数値文字参照
2009/07/19 | PHPの基本
以前、数値文字参照の文字列を作成する方法について記事を書いた。mb_convert_encodingで変換後のエンコーディングにHTML-ENTITIESを指定すれば、数値文字参照に変換することができた。でも、これ、英数字は変換してくれない。
実際の効果のほどはわからないけれどメールアドレスを数値文字参照を使って表現すれば、スパムでもっていかれる確率が少し下がるので、メールアドレスを変換するための関数を書いた。それのメモ。
function str2entities($str){
$value=”;
for($i=0;$i<strlen($str);$i++){
$value.=’&#’.ord(substr($str,$i,1)).';';
}
return $value;
}
引数に変換したいメールアドレスを与えると、数値文字参照で構成されたメールアドレスが返される。マルチバイトでも何でもこいな変換関数を書くのは、mb関数を使うなり適宜工夫すればできそう(今のところ必要ない)。