フロントの人の雑多メモ

【PHP】WordPressでWordの改行コード[OBJ]みたいマークが出てしまう時の対処法

【PHP】WordPressでWordの改行コード[OBJ]みたいマークが出てしまう時の対処法

WordPressでタイトルを入力するときに

WordPress タイトルを追加

Wordでこのようにコピって

Word コピー

WordPressに貼り付けて保存すると

WordPress タイトルを追加

...ん?

WordPress タイトルを追加

なんじゃこりゃ! (いや、まあ大体想像はできるけど...)

WordPress タイトルを追加

Wordの改行コードと思われる、[OBJ]みたいなマーク?が出てしまう
ということがあったので、簡単な改善策をご紹介します。

まあ、Wordでコピーするときに気をつけてこうすればいいんですがね...

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>';

もっといい方法がある!

私の環境ではダメだった!などあればコメントで教えてください。

コメント

内容を確認の上、個人情報などは省いて掲載させていただきます。

お名前・メールアドレスも入力する

メールで返信がほしい場合に入力してください。

頂いた個人情報は開示しません。返信のためだけに利用いたします。

直接送信されます。確認の上、「送信」してください。

お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。

OFUSEで応援を送る


または以下のボタンからなにか買って応援 (PR)

Amazon

楽天市場

Yahoo!ショッピング

Amazonのアソシエイトとして「けん」は適格販売により収入を得ています。

シェア

Twitterでシェア Facebookでシェア LINEでシェア はてなブックマークでシェア

お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。

OFUSEで応援を送る