0

我正在将内容从一个 CMS 移动到另一个 CMS。url 结构不同,所以我想用 php 替换一些 url。

旧网址是

href="book-online?cid=123"

每次调用此链接时,cid 的值都会有所不同。

我希望能够将所有这些链接更改为类似

href="/Book-online.htm?cid=[newPageId]"

页面的 id 已更改,因此我也需要更新它们,但这不是问题。

我在想类似的东西preg_replace可能会起作用,但我对正则表达式的经验很少。

如果您有其他解决方案,我愿意接受。

4

1 回答 1

1

如果内容是 HTML,最好使用 HTML Parser(如 DOM Parser)来解析它。如果你有非 HTML 内容并且只是想替换 H​​REF,那么你可以使用这个 preg_replace:

// Assuming you have old to new id mapping sotred in an array $idmap

$new = preg_replace_callback('/(href=")book-online(\?cid=)([^"]+)"/i',
           function($m) {
               static $idmap = array("123" => "321", "645" => "546");
               return $m[1] . 'Book-online.htm' . $m[2] . $idmap[$m[3]];
           }, $content);

现场演示:http: //ideone.com/o4hpnU

于 2013-04-10T10:36:21.420 回答