我們使用自定義設置高亮在我們的新聞帖子使用的preg_match獲得的文件名
[newsImage] imageName.jpg [/ newsImage]
,我想使用的preg_match從之間獲得imageName.jpg這些標籤。整篇文章存儲在一個名爲$ newsPost的變量中。
我是新的正則表達式,我只是無法弄清楚的preg_match用得到我想要什麼合適的表情。
任何幫助表示讚賞。另外,你們中的任何一個人都知道一個很好的資源來學習正則表達式中每個字符的用法嗎?
我們使用自定義設置高亮在我們的新聞帖子使用的preg_match獲得的文件名
[newsImage] imageName.jpg [/ newsImage]
,我想使用的preg_match從之間獲得imageName.jpg這些標籤。整篇文章存儲在一個名爲$ newsPost的變量中。
我是新的正則表達式,我只是無法弄清楚的preg_match用得到我想要什麼合適的表情。
任何幫助表示讚賞。另外,你們中的任何一個人都知道一個很好的資源來學習正則表達式中每個字符的用法嗎?
preg_match_all('/\[newsImage\]([^\[]+)\[\/newsImage\]/i', $newsPost, $images);
變量$images
應該再包含您的匹配列表。
這不正是你問什麼,但你可以用下面的代碼標記替代你的[newsImage]標籤,它不是完美的,因爲它會掉下來,如果你有一個空的標籤如[newsImage] [/ newsImage]
function process_image_code($text) {
//regex looks for [newsImage]sometext[/newsImage]
$urlReg ="/((?:\[newsImage]{1}){1}.{1,}?(?:\[\/newsImage]){1})/i";
$pregResults = preg_split ($urlReg , $text, -1, PREG_SPLIT_DELIM_CAPTURE);
$output = "";
//loop array to build the output string
for($i = 0; $i < sizeof($pregResults); $i++) {
//if the array item has a regex match process the result
if(preg_match($urlReg, $pregResults[$i])) {
$pregResults[$i] = preg_replace ("/(?:\[\/newsImage]){1}/i","\" alt=\"Image\" border=\"0\" />",$pregResults[$i] ,1);
// find if it has a http:// at the start of the image url
if(preg_match("/(?:\[newsImage]http:\/\/?){1}/i",$pregResults[$i])) {
$pregResults[$i] = preg_replace ("/(?:\[newsImage]?){1}/i","<img src=\"",$pregResults[$i] ,1);
}else {
$pregResults[$i] = preg_replace ("/(?:\[newsImage]?){1}/i","<img src=\"http://",$pregResults[$i] ,1);
}
$output .= $pregResults[$i];
}else {
$output .= $pregResults[$i];
}
}
return $output;
}
要回答你的第二個問題:一個很好的正則表達式的教程是regular-expressions.info。
除其他事項外,還含有regular expression syntax reference。
由於不同的口味正則表達式使用不同的語法,你也想看看regex flavor comparison page。
正如羅布說,但最後逃避]
preg_match('/\[newsImage\]([^\[]+)\[newsImage\]/i', $newsPost, $images);
$圖像[1]將包含圖像文件的名稱。
因爲我只是想匹配的第一個實例,我只使用的preg_match,並告訴我,$圖像是一個數組。所以我嘗試了$圖片[1]和$圖片[0],但我得到0結果兩個。 – Andelas 2010-06-25 16:51:28
修復了最後一個支架! 'preg_match' *應該*返回你的圖像名稱爲$ images [1]或'false',如果沒有任何匹配。 – Rob 2010-06-25 18:29:13
謝謝。我不完全確定爲什麼,但那仍然不適合我。我能夠使用這個/\[[/snewsImage](.*?)\[[//newsImage\]/is – Andelas 2010-06-25 20:54:35