我最近將一些舊內容移至新站點并更新了一些 URL 結構。我需要對整個資料庫進行查找替換以更新一些舊鏈接。如果我知道正則運算式,這會很容易,但我不希望這對 SO 大師來說很容易。
注意:這是 PHP 正則運算式。
尋找:
https://api.floodmagazine.com/{number}/{string}/
Result:
https://api.floodmagazine.com/789/foo-bar/
https://api.floodmagazine.com/12345/foo-bar-1/
用。。。來代替:
https://floodmagazine.com/$1/$2/
Result:
https://floodmagazine.com/789/foo-bar/
https://floodmagazine.com/12345/foo-bar-1/
這不像搜索子域(api.floodmagazine.com)那么容易,因為資料庫中有 URL 需要保留該子域(例如影像)。因此,該/{number/{string}/部分是僅查找需要更改的 URL 的重要方法。
我只需要正則運算式部分,我將 WP Migrate 用于資料庫更新部分。
謝謝您的幫助!

uj5u.com熱心網友回復:
https:\/\/api.floodmagazine.com\/([0-9] )\/([A-z0-9._ -] )\/?
那應該作業。在 regex101 上你必須逃跑/,所以我把它放在這里。在您的工具中可能不是這樣。
?如果您不希望尾部斜杠是可選的,則可以省略最后一個。
uj5u.com熱心網友回復:
這應該獲取您描述的所有 URL:
(https://floodmagazine.com)(\/)[0-9]*(\/)[A-z-0-9]*(\/)
uj5u.com熱心網友回復:
為避免由于 WordPress 不一致導致的 URL 錯誤,您可以使用使用 regex101 生成的 PHP 代碼
$re = '/https?:\/\/([^\/] )\/([^\/] )\/([^\/] )\/?/m';
$str = 'https://api.floodmagazine.com/789/foo-bar/';
$subst = 'https://floodmagazine.com/$2/$3/';
$result = preg_replace($re, $subst, $str);
此正則運算式捕獲域、ID 和帖子名稱。可以捕獲非 HTTPS、特殊字符等特殊情況......并回傳您的示例中預期的結果
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471949.html
下一篇:正則運算式匹配url的兩個部分
