私のウェブサイトには、ユーザーが投稿したものを置き換えるために3つの正規表現があります(1つは無効になっており、その理由は理解できます...)。
1° メールをリンクされたものに置き換える:
$string = preg_replace("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<a href=\"mailto:$1\">$1</a>",$string);
2° Youtube リンクを埋め込みビデオに置き換えます。
$pattern = '/http:\/\/www\.youtube\.com\/watch\?(.*?)v=([a-zA-Z0-9_\-]+)(\S*)/i';
$replace = '<iframe title="YouTube" class="youtube" type="text/html" width="320" height="240" src="http://www.youtube.com/embed/$2" frameborder="0" allowFullScreen></iframe>';
$string = preg_replace($pattern, $replace, $string);
3° リンクをリンクされたものに置き換えます (これらは無効になっています!):
/*** make sure there is an http:// on all URLs ***/
$string = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i", "$1http://$2",$string);
/*** make all URLs links ***/
$string = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a target=\"_blank\" href=\"$1\">$1</a>",$string);
私の問題は、明らかに、以前の正規表現に置き換えられた後、3番目の代替YouTubeリンクが置き換えられることです(シーケンスの切り替え、YouTubeビデオの中断)
YouTubeパターンを無視してURLを置き換えるために3番目の正規表現を有効にする方法は? ありがとうございました ;-)