【PHP】WordPressでWordの改行コード[OBJ]みたいマークが出てしまう時の対処法
WordPressでタイトルを入力するときに
Wordでこのようにコピって
WordPressに貼り付けて保存すると
...ん?
なんじゃこりゃ! (いや、まあ大体想像はできるけど...)
Wordの改行コードと思われる、[OBJ]みたいなマーク?が出てしまう
ということがあったので、簡単な改善策をご紹介します。
まあ、Wordでコピーするときに気をつけてこうすればいいんですがね...
JSONエンコードしてみる
「お知らせタイトル」 と
「お知らせタイトル[OBJ]」 となってしまう状態とで
それぞれJSONエンコードしてみました。
$post_title = get_the_title();
var_dump(json_encode($post_title));
結果は
お知らせタイトル
"\u304a\u77e5\u3089\u305b\u30bf\u30a4\u30c8\u30eb"
お知らせタイトル[OBJ]
"\u304a\u77e5\u3089\u305b\u30bf\u30a4\u30c8\u30eb\ufffc"
明らかに、末尾に「\ufffc」が付いてますね。
末尾が一致すれば削除
JSONエンコードしてみて、末尾が「\ufffc」と一致すれば削除する
という風にしてみます。
問答無用で全てJSONエンコードしてデコードするのでは、他の問題が発生しそうなので
あくまで、末尾に一致した場合のみ、JSONエンコードしてデコードする という風に。
Before
//タイトルを取得しHTMLを削除
$post_title = strip_tags(get_the_title());
//出力
echo '<p>'.$post_title.'</p>';
After
//タイトルを取得しHTMLを削除
$post_title = strip_tags(get_the_title());
//json_encodeした末尾が「\ufffc」と一致するとき
if(preg_match('/\\\ufffc"?\'?$/', json_encode($post_title)) === 1){
$post_title = preg_replace('/\\\ufffc("?\'?)$/', '$1', json_encode($post_title));
$post_title = json_decode($post_title);
}
//出力
echo '<p>'.$post_title.'</p>';
もっといい方法がある!
私の環境ではダメだった!などあればコメントで教えてください。
お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。
または以下のボタンからなにか買って応援 (PR)
Amazon
楽天市場
Yahoo!ショッピング