0

私は、何百もの都市に関する情報を持っているかなり醜い、時代遅れのサイトを更新する仕事を与えられました。それらの都市はすべて独自のサブドメインにあります。たとえば、次のようになります。

london.sitedomain.com

計画では、これらすべてのサブドメインを取り除き、次の形式でサイトをページとして適切に設定することです。

sitedomain.com/london

残念ながら、ドロップダウン メニューを構成する大量のハードコードされたリストがあり、次のようになっています (ただし、数百あります)。

<a href="http://sydney.sitedomain.com">Sydney</a>
<a href="http://auckland.sitedomain.com"> Auckland</a>
<a href="http://melbourne.sitedomain.com"> Melbourne</a>
<a href="http://perth.sitedomain.com"> Perth</a>
<a href="http://wellington.sitedomain.com"> Wellington</a>

この巨大なリストをphp文字列として設定した場合、上記のように、すべてのサブドメイン部分文字列を正しい形式に一括で変更する適切な方法はありますか? または、あなたが考えることができるより良い解決策はありますか?

4

4 に答える 4

2

Notepad++ や Sublime Text などのプログラムで検索と置換を使用した方がよいと思います。どちらも、フォルダー (およびサブフォルダー) の正規表現検索と置換を行うことができます。ハード コードされたリンクの束に対して、PHP がこれに対する最良の解決策になるとは思いません (それは可能ですが、はるかに簡単で信頼性が高くなります)。こちらです。)

次の正規表現を使用します。

search:  http://(.*?)\.sitedomain.com
replace: http://sitedomain.com/\1

これらの検索フィールドと置換フィールドを使用して PHP でそれを行うこともできますが、大量の HTML ファイルを変更する必要があるだけの場合は、テキスト エディターを使用する方がはるかに優れていると思います。

于 2012-07-28T13:59:12.607 に答える
1

リンクが動的 (ハードコードされていない) の場合は、HTML テンプレートへのリンクの割り当て方法を変更します。以下が機能するはずです。

$newurl = preg_replace("#(?:https?://)?(\w+)\.sitedomain\.com/(.*)#i", "sitedomain.com/$1/$2", $oldurl);

リンクが静的な場合は、高度なテキスト エディター (Notepad++、Gedit、TextMate など) を使用して、Search and Replace. preg_replace上記の最初の引数はSearchフィールド用、2 番目の引数は 用Replaceです。

于 2012-07-28T13:59:10.530 に答える
0

別のルートに進み、.htaccess の正規表現を使用してプロセスを自動化することをお勧めします。そうすれば、その大きなリストを書く必要さえありません

このようなもの:

RewriteCond %{HTTP_HOST} ^((www\.)?[^.]+)\.sitedomain\.com.*$
RewriteRule (.*) http://sitedomain.com/%1 [L]

これにより、www (ある場合) が取得され、次にサブドメインが取得され、サブドメインが URL に追加されます。

于 2012-07-28T14:19:01.957 に答える
0

あなたができることの1つは、分解して最初の文字列を取得し、/を含む残りの文字列を追加することです

于 2012-07-28T13:54:19.240 に答える