フロントの人の雑多メモ

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

もっといい方法がある!

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

コメント

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

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

シェア

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