0
テキストエリアをチェックしたいと思います。ユーザーがテキストエリアにいくつかのリンクを入力すると、phpはリンクに自動的にタグを付けるべきです。私はこのコードを使用しています:PHPの正規表現/ "<a></a>"
$message = "text with some link within";
$url = '@(?!<a[^>]*?>)(http)?(s)?(://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])(?![^<]*?</a>)@';
if(preg_match($url, $message) == 1){
$message = preg_replace($url, '<a href="http$2://$4" target="_blank" rel="nofollow" title="$0">$0</a>', $message);
}
問題があり、すでに(「」タグ付き)タグ付きのリンクがありますとき、正規表現は、リンクを破壊しています。ここで
は一例です:
テキストエリアからの最初の入力:正規表現によって変更こんにちは.... test.com
:Hello ... <a href="http://test.com" target="_blank" rel="nofollow" title="test.com">test.com</a>
これが正常に動作していますが、これを更新した場合:
Hello ... http://test.com" target="_blank" rel="nofollow" title="test.com" target="_blank" rel="nofollow" title="test.com">test.com">test.com">test.com
ありがとうございました!
質問タイトルでは、通常のexperssionがあなたのdescritionでを見つけることを希望します。あなたはURL-sに一致させたいと思います。どちらが必要ですか? :) HTMLコードや生テキストで検索したいですか? – Peter
正規表現を使用してHTMLを解析しないでください。DOMパーザライブラリ(DOMDocumentなど)を使用してください。 – Barmar
例のように、私はタグのないタグ・リンクのみを検索する方法を探しています...大きな問題は、投稿をもう一度編集すると、正規表現がタグを前のタグが付いているので、結局リンクは全く機能していません –