1

Web サイトに複数のリンクを含む文字列がありますが、それらを別の Web サイトにリンクするように変更する必要があります。

たとえば、http://www.site2.com/contactandhttp://www.site3.com/contactは になる必要がありhttp://www.mainsite.com/contactます。ここにある URL/contactは単なる例です。現実には、すべてのインスタンスを見つけて、そのコンテンツと次のコンテンツの間のコンテンツを新しい URLhttp://に置き換える必要があります。/

これを行う方法はありpreg_replace()ますか(または、これが最適なオプションである場合は同様です)?

4

4 に答える 4

3

更新:この回答は質問を反映していませ。最初は質問が少し誤解を招くものだったからです。Jeroens または ShogunArts.des の回答をご覧ください

正規表現は不要

$string = str_replace(
  array('http://www.site2.com/','http://www.site3.com/'),
  'http://www.mainsite.com/',
  $string
);

str_replace()

于 2012-07-06T12:07:37.983 に答える
2
  1. URL を一致させます: http://daringfireball.net/2010/07/improved_regex_for_matching_urls
  2. preg_replace_callback()を使用し、コールバック関数内で:
    1. parse_url()を使用してすべての部分を取得します
    2. hostに部品を交換します。mainsite.com
于 2012-07-06T12:08:46.680 に答える
1

このような何かがそれを行う必要があります:

$pattern = '#(http://)([a-z0-9.-])+/+([a-z0-9.-])#i';
$oldurl = 'http://www.site2.com/contact';
$replacement = '$1www.mainsite.com/$3';

$newurl = preg_replace($pattern, $replacement, $oldurl);

編集:

$string = 'String with many URLs';

echo replaceUrls($string);

function replaceUrls($string) {
    $pattern = '#(http://)([a-z0-9.-])+/+([a-z0-9.-]|)#i';
    $replacement = '$1www.mainsite.com/$3'; 

    return preg_replace($pattern, $replacement, $string); 
}
于 2012-07-06T12:29:28.833 に答える
0

正規表現(?<=http://)(www\.site2\.com)(?=/contact)を新しいサイト名に置き換えます

于 2012-07-06T12:07:16.973 に答える