2012-05-03 4 views
0

を代入する上でYouTubeのリンクを代入もの:PHPのにpreg_replace:リンクされて</p> <p>1度メールを交換してください:私は、ユーザーのポストは何代用するために、3つの正規表現(1が無効になっていると、あなたは理由を理解でしょうが...)持っている私のウェブサイトのURL

$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); 

私の問題は、ユーチューブのパターンを無視してURLを置換する第三正規表現を有効にする方法

(シーケンスを切り替え、ユーチューブの動画を破る)、明らかに、という彼らは、以前の正規表現に置き換えられた後、三番目の代替ユーチューブリンクですか? は

答えて

2

はこれを試してみてください;-)ありがとう:

// youtube 
$string = preg_replace("/\s*[a-zA-Z\/\/:\.]*youtube.com\/watch\?v=([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i"," <object width=\"100%\" height=\"344\"><param name=\"movie\" value=\"http://www.youtube.com/v/$1&hl=en&fs=1\"></param><param name=\"allowFullScreen\" value=\"true\"></param><embed src=\"http://www.youtube.com/v/$1&hl=en&fs=1\" type=\"application/x-shockwave-flash\" allowfullscreen=\"true\" width=\"100%\" height=\"450\"></embed></object> ",$string); 

// email 
$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); 

// links 
$string = preg_replace("#(^|[\n\s>])([\w]+?://[^\s\"\n\r\t<]*)#is", "\\1<a href=\"\\2\">\\2</a>", $string); 
+0

かなり完璧!唯一の問題は、http://なしで始まるURLアドレスを置換しないことです –

関連する問題