1

私はすべてのURLに一致するこの正規表現を持っており、うまく機能します:

$regex ='@((https?://)([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)@';                           
return preg_replace_callback( $regex, 'replacing' , $content );

:内の一致するURLを避ける必要がありsrc="***"ます<a href="">***</>。テキストは保持しますが、URLを置き換えます。

私は試しました:正規表現に否定を追加します:

$regex ='@((?!src="|?!>)(https?://)([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)@';

URLがsrc="で始まる場合の最初の否定2番目の否定は、hrefahref>の間にある場合です。

それを機能させるためのアイデアはありますか?

4

1 に答える 1

0

適切な出発点は、ケースを処理し、ケースに簡単に適応できるlib_autolinkです。HTML が完全に有効であること (テキストに引用符がないなど) を保証できない限り、単一の正規表現でこれを行うことは自明ではなく、おそらく不可能です。<a><img>

于 2012-04-09T16:25:43.750 に答える