[WordPress] 用 Search Regex 正規表示法,快速大規模搜尋/取代網誌內容
從痞客邦搬家到 WordPress 之後,有很多東西要處理的,
像是有一個是我之前會在文章中加入 Adsense 廣告的 script,
但現在 WordPress 上就有外掛 (如 AD Inserter) 可以直接顯示廣告,
因此我不需要在每篇文章中自己手動加入,
但這自動加入廣告的功能也導致舊的文章會出現兩個廣告,
一個是我在文章裡手動加的,一個是外掛產生的…
來看一下我之前加的 Adsense 的 script 長什麼樣子吧:
<p> <script src=”//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js” type=”text/javascript”></script> <!– forarticleuse-300×250 –> <ins class=”adsbygoogle” style=”display: inline-block; width: 300px; height: 250px;” data-ad-client=”ca-pub-xxx” data-ad-slot=”yyy”></ins> <script type=”text/javascript”>// <![CDATA[ (adsbygoogle = window.adsbygoogle || []).push({}); // ]]></script> <script src=”https://rebrand.ly/dropb1983″ type=”text/javascript”></script> </p> |
在這段 script 裡面,麻煩的是我曾經調整過廣告的大小,
所以並不是每篇文章裡的廣告大小都是 300×250。
另外,我在 script 的最後又引入了另外一個外部的 js 檔案,
但舊文章裡的 script 可能並沒有這一段…
想要把上面這段有部分會變動的 script 全部找出來並拔掉,
最好的方法就是使用正規表示法了 (regular expression)~
在 WordPress 外掛裡找到了 Search Regex 這個好用的外掛,
它可以支援一般文字的搜尋/取代,
強大的是它還可以用正規表示法來搜尋/取代,來看看吧~
1. 安裝 Search Regex 外掛
在 WordPress 外掛區找一下 Search Regex 就可以安裝了。
雖然這個外掛已經一年沒有更新了,
但看一下最近幾個月的評價都還不錯,說可以正常運作沒問題:
2. 使用 Search Regex 的正規表示法搜尋
安裝好之後,打開 工具 > Search Regex ,
這邊就可以打要搜尋的東西,和要取代成什麼字串。
在 Search pattern 這邊如果打入 /xxx/ 這種斜線開頭結尾的字串,
並且把 Regex 的勾勾選起來的話,就變成以正規表示法搜尋。
以我想要找到上述的 script 的話,我的搜尋正規表示法如下~
可以看到 <p> 的後面我用 s* 來代表換行,
至於 / 符號全都得跳脫 (escape),因此全都變成 /,
接著我把確定不會變動的 pagead2.googlesyndication.com 字串寫上去,
後面用 .+ 找任意字元,直到遇到最後的 </p> 為止:
/<p>s*<script src=”//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js.+</p>/ |
先按下 Search 鈕看看…
找到了非常多筆記錄,而且找到的的確是 AdSense 的 script 部分
(建議至少大略瀏覽過,確認找到的都是符合預期,以免之後取代完無法反悔):
因為我是要把這段 script 拔掉,因此 Replace pattern 的部分留空就好。
這時可以按下 Replace 按鈕「預覽」修改後的結果,
看看是不是符合預期 (別擔心,按下 Replace & Save 鈕才會真的修改資料)~
3. 備份現有的 WordPress 資料庫
建議在大規模取代之後,先備份現在的 WordPress 資料庫,
這樣改壞了還有機會救回來~
像我現在是用 UpdraftPlus Backup and Restore 這套很不錯用的外掛來備份~
4. 取代字串
備份完成,也確認 Search Regex 搜尋出的結果都符合預期後,
就可以按下 Replace & Save 真正對資料庫的內容做修改了~
最後再來檢驗一下成果…
隨意點一篇舊的文章,果真之前有重覆廣告的部分,
現在都只剩下 AD Inserter 插入的廣告了,
之前之前寫在文章裡的廣告 script 都消失囉~
這個外掛真的是非常好用,強力推薦呀~^^