2017-12-11 16 views
-1

現在、正規表現を使用して、より大きなコンテンツ本体内にある&リンクテキストを自動的にキャプチャするよう試みています。私はこの罰金をある程度まですることができます。探しているテキストが既にリンク内にある場合、私の問題が発生します。HTML要素内にないテキストをキャプチャ/置換するPHP Regex

ここ

は私が持っている現在のコードである:

foreach($items as $item) { 
    if(!empty($item->generic_url)) { 

     $search = $item->title; 
     $url = $item->generic_url; 
     $content = preg_replace("/($search)/i", "<a href=\"$url\">$1</a>", $content, 1); 

    } 
} 

シナリオ(それは "リンク" の自動リンク最初に出現する必要があります):

$content = "This is some text that will link to another page"; 

シナリオB(それ"リンク"の最初の出現を自動リンクしないでください):

$content = "This is some text that will <a href='#'>link</a> to another page"; 

シナリオC(それは「リンク」の自動リンク最初に出現するべきではありません):

$content = "This is some text that <a href='#'>will link to</a> another page"; 
+0

「/(\ blink \ b)(?![^ <] * <\/a)/ ' - https://regex101.com/r/FwAeIP/1 – splash58

+0

ありがとうございました単語境界の考えsplash58。私は最終的な答えでそれを使い終わった。 – Andy

答えて

0

私はこの質問/回答に基づいてそれを把握することができた:達成するために Ignore img tags in preg_replace

私の具体的な目標、私は次のコードを使用:私は部分的な言葉トンがなかったことを確認するために、境界単語を追加、破棄パターンを使用することに加えて

$content = preg_replace("/<a.*?\/a>(*SKIP)(*FAIL)|\b($search)\b/i", "<a href="$url">$1</a>", $content, 1); 

を帽子がマッチした。

関連する問題