0

次の preg_replace() 呼び出しを使用して、リンクを新しい構造に置き換えています。

preg_replace('/example.com\/sub-dir\/(.*)">/', 'newsite.co.uk/sub-dir/$1.html">', $links);

置換の最後に「.html」を追加しないことを除いて、ほとんど機能するため、「newsite.co.uk/sub-dir/page-identifier」ではなく「newsite.co.uk/sub-dir/page-identifier」のようなものになります。 co.uk/sub-dir/page-identifier.html".

私が見逃しているのは単純なことだと確信していますが、問題をグーグルで調べても有用な結果が得られなかったので、ここの誰かが助けてくれることを願っています!

前もって感謝します!

編集:例として、これは $links のリンク側です

<a href="http://example.com/sub-dir/the-identifier">Anchor</a>

上記の例は、正規表現を (.*?) に変更した場合に機能しますが、以下は機能しません。

<a class="prodCatThumb" title="View product" href="http://example.com/sub-dir/product-identifier">

それは次のようになります

<a class="prodCatThumb.html" title="View product" href="http://example.com/sub-dir/product-identifier">

何か案は?

4

3 に答える 3

2

はい、それは次のように.*
追加するだけです:?.*?

例:

<?php
    $links = "example.com/sub-dir/myfile.php";
    $links = preg_replace('/example.com\/sub-dir\/(.*?)/', 'newsite.co.uk/sub-dir/$1.html', $links);
    echo $links;
?>

編集: @Ashley: 確かに、疑問符は正規表現の前のトークンをオプションにします。例: color?r は color と color の両方に一致します (このリンクから)。

しかし、追加で ? を使用すると、それは準備ができていない方法です (これは説明に役立つかもしれません: .*? (ドットスタークエスチョンマーク) を使用した正規表現が多すぎますか?またはこれ: http://www.phpro.org/tutorials/Introduction-to-PHP-Regex. html )

だから、あなたのqqに答えるには:

<?php
    $links = '<a class="prodCatThumb" title="View product" href="example.com/sub-dir/product-identifier">';
    $links = preg_replace('/example.com\/sub-dir\/(.*?)"/', 'newsite.co.uk/sub-dir/$1.html"', $links);
    echo $links;
?>

このリンクの出力:
<a class="prodCatThumb" title="View product" href="example.com/sub-dir/product-identifier">
は次のようになります。
<a class="prodCatThumb" title="View product" href="newsite.co.uk/sub-dir/product-identifier.html">

于 2012-04-26T11:53:59.057 に答える
0

$links問題をよりよく理解するには、 の内容を確認する必要があります。

その間、あなたは試すことができます:

preg_replace('#example\.com/sub-dir/([^"]*)">#', 
             'newsite.co.uk/sub-dir/$1.html">', $links);
于 2012-04-26T11:54:12.203 に答える
0

このテスト ページを使用して正規表現を確認しましたが、提供されたサンプル テキスト ( <a href="http://example.com/sub-dir/the-identifier">Anchor</a>) で問題なく動作します。他に問題を引き起こしているものはありませんか?

テスト サイトはこれを返します。<a href="http://newsite.co.uk/sub-dir/the-identifier.html">Anchor</a>

于 2012-04-26T12:00:03.593 に答える