2012-04-26 42 views
0

我有一個字符串和IM使用preg_match_all找到該字符串一些標籤:我如何替換一些標籤和他們的內容與自定義文本在PHP中?

$str = " 
Line 1: This is a string 
Line 2: [img]http://placehold.it/350x150[/img] Should not be [youtube]SDeWJqKx3Y0[/youtube] included."; 

preg_match_all("~\[img](.+?)\[/img]~i", $str, $img); 
preg_match_all("~\[youtube](.+?)\[/youtube]~i", $str, $youtube); 

foreach ($img[1] as $key => $value) { 
    echo '<img src="'.$value.'" "/>'; 
} 

foreach ($youtube[1] as $key => $value) { 
    echo '<iframe width="420" height="315" src="http://www.youtube.com/embed/'.$value.'" frameborder="0" allowfullscreen> </iframe>'; 
} 

這將返回究竟是什麼是呼應了正確的價值觀。

但什麼其實我想要的是返回與該[img][youtube]標籤從這些語句的foreach與值替換整個字符串:

Line 1: This is a string 
    Line 2: <img src="http://placehold.it/350x150" "/> Should not be <iframe width="420" height="315" src="http://www.youtube.com/embed/SDeWJqKx3Y0" frameborder="0" allowfullscreen> </iframe> included. 

我不是找一個第三方的替代,只是普通的PHP函數。

我在想使用preg_match和一些caseswitch陳述的,但我並沒有成功

的想法?

回答

1

您可以使用preg_replace

像這樣的東西。

$pattern = Array(); 
$pattern[0] = "~\[img](.+?)\[/img]~i"; 
$pattern[1] = "~\[youtube](.+?)\[/youtube]~i"; 

$replacement = Array(); 
$replacement[0] = '<img src="${1}" "/>'; 
$replacement[1] = '<iframe width="420" height="315" src="http://www.youtube.com/embed/${1}" frameborder="0" allowfullscreen> </iframe>'; 

$stringToReturn = preg_replace($pattern, $replacement, $str); 
+0

看起來像這樣做了。我早些時候嘗試過同樣的事情,並且通過使用'http:// writecodeonline.com/php /'得到了一堆錯誤。看起來它不能那樣做 – Patrioticcow 2012-04-26 17:51:53

相關問題