0

正規表現を正しく取得しようとして問題が発生しています。基本的に、さまざまなリンクを含む HTML 文字列があります。href 属性が同じドメイン、または承認済みドメインのリスト内のドメインを指している場合、何も変更されません。それ以外は、元の href を URL パラメータとして使用してリダイレクト ページに変更する必要があります。

たとえば、次のドメイン名が許可されているとします。

domain1, domain2, domain3

許可されていないドメインは「/redirect.htm?url=...」を指しています

次の文字列が必要です

<p>this is a paragraph with 
    <a href="/index.htm">link 1</a> and 
    <a href="http://domain4/page.htm">link 2</a> and 
    <a href="http://www.domain1.com">link3</a> and 
    <a href="http://www.domain5.com/directory/page.htm">link 4</a>
</p>

次のように変更されます:

<p>this is a paragraph with 
    <a href="/index.htm">link 1</a> and 
    <a href="/redirect.htm?url=domain4/page.htm">link 2</a> and 
    <a href="http://www.domain1.com">link3</a> and 
    <a href="/redirect.htm?url=www.domain5.com/directory/page.htm">link 4</a>
</p>

また、コンテンツ管理システム用の Java ベースのカスタム言語である IdocScript を使用していることも指摘しておく必要があります。私はそれについて助けを必要としません。正規表現だけです。

これまでに思いついた最高のもの(明らかに機能しない)は次のとおりです。

<$ regex = "href=\"(^(/|domain1|domain2|domain3)" $>
<$ regexReplaceAll( originalString, regex, 'href="/redirect.htm?url=$1') $>

誰でも助けることができますか?

4

2 に答える 2