頁:
[1]
關於正規表示法URL超連結及圖片顯示
本帖最後由 n652585 於 2016-10-14 12:23 AM 編輯大家好~
關於標題的問題,我在網路上有搜尋一些解答
目前我是使用這個方法:
<?php
// 將字串中的網址加入超連結
function parseURL($strURL = null)
{
$regex = "{ ((https?|telnet|gopher|file|wais|ftp):[\\w/\\#~:.?+=&%@!\\-]+?)(?=[.:?\\-]*(?:[^\\w/\\#~:.?+=&%@!\\-]|$)) }x";
return preg_replace(
$regex,
"<div class='locked'>下載: <em>訪客無法瀏覽下載點,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>",
$strURL);
}
echo ParseMsg('http://www.php.net');
?>
可以把網址用成可以點的超連結,但我最近想要貼上圖片的網址
例:http://i.imgur.com/XXXXXX.jpg
是可以顯示出這個網址的超連結,但我希望可以直接顯示出圖片出來
所以我自己改了上面的一小段:
<img src=\"$1\" target=\"_blank\">
但發現只能顯示圖片啊!!!! 哈哈
而且對正規表示完全無法理解...
所以想請問大家,要怎麼顯示網址的超連結和遇到圖片的網址時可以直接顯示圖片呢?
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div> 本帖最後由 theloserbm 於 2016-10-14 11:53 AM 編輯
你的正規表示法後面需要加上偵測圖片的部分
一般用法可以用檔名的後綴去判斷, 如jpg/jpeg/png/gif等等
比較安全的做法是把檔案下載下來然後用裡面的資料來判斷, 不過就會吃掉一定的頻寬和時間
我小改了你的regex, 加入了後綴擷取, 但是移除了positive lookup的部分, 你看看有沒有弄壞了甚麼.
((?:https?|telnet|gopher|file|wais|ftp):(?:[\\w/\\#~:.?+=&%@!\\-]+?)(?:\\.(\\w+))?$)
測試網站: https://regex101.com/r/oPjtJi/2 (必須把雙斜線換成單斜線)
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> 謝謝你~
但是...我不知道要怎麼運用耶...
如果說直接換上你幫我改的部分
那下面<div class='locked'>下載: <em>訪客無法瀏覽下載點,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
的部分要怎麼改呢?
真的很抱歉我還不太會.. 你現在用的是preg_replace, 拆開用preg_match來做就可以了preg_match($regex, $strUrl, $matches);
if (count($matches) >= 3 && in_array($matches, ['jpg', 'png', 'gif'...])) {
$output = "<img src="...
}
else {
$output = "<a href="...
} 好~~
非常謝謝你~~
我再研究研究一下XD
再次感謝你~~{:52:}<br><br><br><br><br><div></div>
頁:
[1]