前回の続き。
チュートリアルには全く載っていない問題点を修正します。
チュートリアル通りに投稿フォームを作成し、日本語で記事を投稿した場合、以下のNoticeが発生します。
>Notice: iconv() [function.iconv]: Detected an illegal character in input string in symfony/lib/Jobeet.class.php on line 17
何処かというとslugifyやってるこの行です。
/lib/Jobeet.class.php
http://jp2.php.net/manual/ja/function.iconv.php
>文字列 //TRANSLIT を out_charset に追加すると、翻字機能が有効になります。これは、指定された文字集合で 表せない文字を、見た目の似ている別の文字に置き換える機能です。 文字列 //IGNORE を追加すると、指定された文字集合で 表せない文字は黙って切り捨てられます。 それ以外の場合は、str の中に変換できない文字が 出現した時点で変換が打ち切られ、E_NOTICE が発生します。
日本語をus-asciiに翻字できないよ、ということです。
日本語記事が投稿できないというのは非常に問題ですが、翻字しなければいいだけなので単純に//IGNOREを追加すれば解決します。
/lib/Jobeet.class.php
問題点として、リンクのURLから日本語が一切消えて無くなってしまいますが、まあ日本語URLとか面倒なので消えてもいいや。
…あれ?
見た目をわかりやすくするためのURL変換だった筈なんだがその理念は何処行った?
そんな理念最初から無かったということで一つ。
チュートリアルには全く載っていない問題点を修正します。
チュートリアル通りに投稿フォームを作成し、日本語で記事を投稿した場合、以下のNoticeが発生します。
>Notice: iconv() [function.iconv]: Detected an illegal character in input string in symfony/lib/Jobeet.class.php on line 17
何処かというとslugifyやってるこの行です。
/lib/Jobeet.class.php
1
2
|
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
|
http://jp2.php.net/manual/ja/function.iconv.php
>文字列 //TRANSLIT を out_charset に追加すると、翻字機能が有効になります。これは、指定された文字集合で 表せない文字を、見た目の似ている別の文字に置き換える機能です。 文字列 //IGNORE を追加すると、指定された文字集合で 表せない文字は黙って切り捨てられます。 それ以外の場合は、str の中に変換できない文字が 出現した時点で変換が打ち切られ、E_NOTICE が発生します。
日本語をus-asciiに翻字できないよ、ということです。
日本語記事が投稿できないというのは非常に問題ですが、翻字しなければいいだけなので単純に//IGNOREを追加すれば解決します。
/lib/Jobeet.class.php
1
2
|
$text = iconv('utf-8', 'us-ascii//TRANSLIT//IGNORE', $text);
|
問題点として、リンクのURLから日本語が一切消えて無くなってしまいますが、まあ日本語URLとか面倒なので消えてもいいや。
…あれ?
見た目をわかりやすくするためのURL変換だった筈なんだがその理念は何処行った?
そんな理念最初から無かったということで一つ。
PR
トラックバック
トラックバックURL: