PHPでホワイトスペースを省きプレーンテキストにするときハマった事
ホワイトスペースというと、全角スペース、半角スペースの他に、改行コードやタブなんかも関係してきますね。このホワイトスペースをPHPのstr_replaceでマッチングしたもの全て空文字に置き換える作業してたんだけど、いくら取り除いてもまだホワイトスペースが付くという事態に陥ったわけですね。
FirefoxならFirebug、Google Chromeなら右クリの検証から、デバッグツールを開いてもまだ半角スペースが付いている。何でだろう??
// PHP
function get_plain_text($str){
$str = trim(strip_tags($str));
$str = mb_convert_kana($str, "s", "UTF-8");
$str = str_replace(array(" "," ","¥r¥n","¥n","¥r","¥t","¥f","¥v","¥0","¥x0B"), "", $str);
return $str;
}
半ばヤケっぱちだけど、ブラウザからソースを開いてみると、半角スペースの箇所が、" " になっていました。半角空白文字列がエスケープされた状態。これはちょっと盲点でした。htmlspecialcharsを使った覚えは無いんだけどな・・・。とりあえず結果が分かって良かったです。
// PHP
function get_plain_text($str){
$str = trim(strip_tags($str));
$str = mb_convert_kana($str, "s", "UTF-8");
$str = str_replace(array(" "," "," ","¥r¥n","¥n","¥r","¥t","¥f","¥v","¥0","¥x0B"), "", $str);
return $str;
}
こうですね。