||<
$en_name0 = get_the_title();
//タイトルから特殊記号文字を空文字('')に置き換える
$formated_name = preg_replace('/[^ぁ-んァ-ンーa-zA-Z0-9一-龠0-9\-\r]+/u','' ,$en_name0);
$formated_name = mb_convert_encoding($formated_name, 'UTF-8', 'auto') ;
$en_name = mb_substr($formated_name, 0, 8,"UTF-8" ) . "\n"; ; //タイトル先頭から文字切り出す
>||
例えば、「北朝鮮ミサイル発射の失敗」 というタイトルが
21271263 という数字(10進数?)
になってしまいます。
原因がわかりますでしょうか。
例えば、「北朝鮮ミサイル発射の失敗」 というタイトルが
21271263 という数字(10進数?)
になってしまいます。
21271 は、「北」の UTF-8 の文字コード(十進数)なので、get_the_title で取得した記事のタイトルが数値参照の表現になっていると想像します。
mb_convert_encoding を使って、数値参照の表現を通常の文字に直してから使えば良いと思います。
<?php $en_name0 = get_the_title(); // "北朝鮮 ..." というような文字列になってるはず // ↓これを追加 $en_name0 = mb_convert_encoding($en_name0, 'UTF-8', 'HTML-ENTITIES'); //タイトルから特殊記号文字を空文字('')に置き換える $formated_name = preg_replace('/[^ぁ-んァ-ンーa-zA-Z0-9一-龠0-9\-\r]+/u','' ,$en_name0); // ↓要らない // $formated_name = mb_convert_encoding($formated_name, 'UTF-8', 'auto') ; $en_name = mb_substr($formated_name, 0, 8,"UTF-8" ) . "\n"; ; //タイトル先頭から文字切り出す ...
mb_convert_encoding だと、数値参照以外を受け付けないのですね。
2017/05/24 23:25:49"&#" が含まれているかどうかを判定するという方法もあると思いますが、こちらの関数を使う手もありそうです。
http://php.net/manual/ja/function.mb-decode-numericentity.php
第2引数がもやっとする感じですが、こんな感じで行けると思います。
返信が遅くなり申し訳ありません。ありがとうございました。mb_decode_numericentityでうまくいきました。
2017/05/26 09:49:42この引数の部分が呪文のようです。。。これは変換する範囲を表しているのですね。とても勉強になりました。ありがとうございました。