私は正規表現があまり得意ではありませんが、次の例をこれから変換する必要があります
<li>Creations by Carol - www.driedfloralcreations.com</li>
に
<li>Creations by Carol - <a href="http://www.driedfloralcreations.com" rel="external">www.driedfloralcreations.com</a></li>
質問のようにフォーマットされた要素の URL のみを探している場合<li>
は、他の多くの提案されたソリューションよりもはるかに簡単なはずです。URL を検証する必要は実際にはありません。おそらく、サイト名と URL のリストを取得して、URL をリンクに変換したいだけだと思います。
検索パターンは次のとおりです。
<li>(.+) - (https?:\/\/)?(\S+?)<\/li>
置換パターンは次のようになります。
<li>$1 - <a href="(?2:$2:http\://)$3" rel="external">$3</a></li>
TextMate で検索/置換をテストしたところ、うまく機能しました。http://
まだ存在しない場合は追加し、それ以外の場合は、スペースが含まれていない限り、の後にあるものはすべて URL であると想定します-
。
正規表現をテストするには、Rubularが優れたツールです。テキストを貼り付けると、正規表現を入力するときに一致するものが表示されます。これは ruby ツールですが、TextMate は ruby と同じ正規表現構文を使用します。
PHPでこれはどうですか?
$string = '<li>Creations by Carol - www.driedfloralcreations.com</li>';
$pattern = '/(www\.[a-z\d-\.]+\.[a-z]+)/i';
$replacement = '<a href="http://$1" rel="external">$1</a>';
echo preg_replace($pattern, $replacement, $string);
リンクが常に www.something.extension であると仮定します。
誤検知を避けるために、正規表現にどのくらいの情報を与える必要があるかを明確にする必要があります。
たとえば、パターン www.something.somethingelse で十分ですか? ファイルに他の www がありますか?
おそらく <li> something - somethingelse</li> が正しい一致です。ファイル全体を知らずに推測することはできません。変更したくない他の <li> があるかもしれません。
www\.[a-zA-Z0-9_-]+\.(fr|com|org|be|biz|info|getthelistsomewhere)