【WordPress】【解決済】プラグイン「Search Regex」で検索にヒットしない

wordpress

とっちゃん@nyanco! です。

今回は、WordPressのプラグイン「Search Regex」で検索にヒットしなくて困ったけど解決したよというお話です。

スポンサーリンク

先に結論

結論としては、「Search Regex」はhtmlタグ内の日本語はそのままでは検索にヒットしないので、デコードする必要があるということでした。

詳細・対策は以下をどうぞ。

特定の文字列が含まれるimgタグを削除させたい

今回やりたかったのは、投稿記事内のとある文字列が含まれているimgタグだけを一括で削除させたい!というものです。

具体的にはalt=”アイキャッチ” 」が含まれるimgタグを一括削除です。

正規表現で下記のように指定して検索をかけてみました。

|<img.+alt=”アイキャッチ”.+ />|

前後の「|」は「デリミタ(「区切り」の意味)」という区切り記号で、「Search Regex」で正規表現する際に必要な記号です。記号は「#」「/」などでも良いですが、デリミタで挟んでいるコード内で使われてない記号でないとダメです。今回は「/」は検索文字列として使用しているのでデリミタとしては使えない、ということになります。

しかし「There are no results.」と表示されヒットせず…

「正規表現が間違ってる?」と思い色々試すもダメで、根本的に使い方が間違ってるのかと思い、正規表現でない単純な文字列「alt=”アイキャッチ”」で検索するもヒットせず…

投稿記事をテキスト表示すると確かに「alt=”アイキャッチ”」は存在するのに、なぜだ…

ものは試しに「アイキャッチ」だけで検索してみると、

ヒットしました!

しかし、良く見るとヒットしているのは本文内にある「アイキャッチ」という文字列で、htmlタグ内にある「アイキャッチ」はヒットしてない…

この時点で、なんとなく分かってきました。

タグ内の日本語は日本語のまま検索してもヒットしない!

htmlタグ内に含まれる日本語(今回の場合は、alt属性の「アイキャッチ」)は、「Search Regex」では日本語のままではヒットしないということでした。

日本語を何かしら別のコードに変換する必要があるっぽいことまでは分かったんですが、そこから先が分からずまたハマってしまいました…

何気なく、バックアップのために投稿記事をエクスポートしていたXMLをテキストエディタで開いて中を見ていたら、「alt=”アイキャッチ”」とあるべき部分が下記のようになっていました。

alt=”&#x30A2;&#x30A4;&#x30AD;&#x30E3;&#x30C3;&#x30C1;

文字化けしてるように見える黄色いアンダーライン部分が「アイキャッチ」に該当。

詳しくは分かりませんが、タグ内の日本語がASCIIコードの16進数っぽい文字列に変換されてるようです。

これをコピーペーストして再度「Search Regex」で検索をしてみると、見事に「alt=”アイキャッチ”」にヒットさせることができました!

「Search」「Replace」ボタンをクリックすると、「Search pattern」の文字列が普通の日本語に変換されます。通常のようにプレビューを確認してから「Replace & Save」ボタンをクリックしてもまたヒットしなくなるので、都度「Search pattern」に変換した日本語コードをコピーペーストする必要があります。

結論

・「Search Regex」では、htmlタグ内の日本語は「日本語のまま」では検索できない
・投稿記事を「ツール」→「エクスポート」からXMLにエクスポートすると、htmlタグ内の日本語を「Search Regex」で検索できるコードに変換されるのでそれをコピペして対応する

本記事がどなたかの参考になれば幸いです。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

コメント