とっちゃん@nyanco! です。
今回は、WordPressのプラグイン「Search Regex」で検索にヒットしなくて困ったけど解決したよというお話です。
先に結論
結論としては、「Search Regex」はhtmlタグ内の日本語はそのままでは検索にヒットしないので、デコードする必要があるということでした。
詳細・対策は以下をどうぞ。
特定の文字列が含まれるimgタグを削除させたい
今回やりたかったのは、投稿記事内のとある文字列が含まれているimgタグだけを一括で削除させたい!というものです。
具体的には「alt=”アイキャッチ” 」が含まれるimgタグを一括削除です。
正規表現で下記のように指定して検索をかけてみました。
|<img.+alt=”アイキャッチ”.+ />|
しかし「There are no results.」と表示されヒットせず…
「正規表現が間違ってる?」と思い色々試すもダメで、根本的に使い方が間違ってるのかと思い、正規表現でない単純な文字列「alt=”アイキャッチ”」で検索するもヒットせず…
投稿記事をテキスト表示すると確かに「alt=”アイキャッチ”」は存在するのに、なぜだ…
ものは試しに「アイキャッチ」だけで検索してみると、
ヒットしました!
しかし、良く見るとヒットしているのは本文内にある「アイキャッチ」という文字列で、htmlタグ内にある「アイキャッチ」はヒットしてない…
この時点で、なんとなく分かってきました。
タグ内の日本語は日本語のまま検索してもヒットしない!
htmlタグ内に含まれる日本語(今回の場合は、alt属性の「アイキャッチ」)は、「Search Regex」では日本語のままではヒットしないということでした。
日本語を何かしら別のコードに変換する必要があるっぽいことまでは分かったんですが、そこから先が分からずまたハマってしまいました…
何気なく、バックアップのために投稿記事をエクスポートしていたXMLをテキストエディタで開いて中を見ていたら、「alt=”アイキャッチ”」とあるべき部分が下記のようになっていました。
alt=”アイキャッチ“
文字化けしてるように見える黄色いアンダーライン部分が「アイキャッチ」に該当。
詳しくは分かりませんが、タグ内の日本語がASCIIコードの16進数っぽい文字列に変換されてるようです。
これをコピーペーストして再度「Search Regex」で検索をしてみると、見事に「alt=”アイキャッチ”」にヒットさせることができました!
結論
・「Search Regex」では、htmlタグ内の日本語は「日本語のまま」では検索できない
・投稿記事を「ツール」→「エクスポート」からXMLにエクスポートすると、htmlタグ内の日本語を「Search Regex」で検索できるコードに変換されるのでそれをコピペして対応する
本記事がどなたかの参考になれば幸いです。
今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧
コメント