1

テキストで解析できる関数が必要であり、(jpg|png|gif|jpeg|bmp) 拡張子を含むすべてのリンクを<img>タグに置き換えます。その後、( なしの他のすべてのリンクも置き換えます) jpg|png|gif|jpeg|bmp)<a>タグ付き拡張子。

たとえば、次のように置き換えます。

http://imgur.com/gallery/TpGvHBL http://i.imgur.com/TpGvHBL.jpg

<a href="http://imgur.com/gallery/TpGvHBL" target="_blank">http://imgur.com/gallery/TpGvHBL</a> <img src="http://i.imgur.com/TpGvHBL.jpg" />

================================================== =========================

<img>現在、以下の正規表現を使用して、画像の URL をタグに置き換えることができます。

$text = preg_replace('#((https?|ftp):\/\/([^\s]*)\.(jpg|gif|png))#', '<img src="$1" />', $text);

<a>また、通常の URL をタグに置き換えるために以下も使用します。

$text = preg_replace('/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i', '<a href="$1" target="_blank">$1</a>', $text);

私が望むのは、最初の正規表現と競合するため、2 番目の正規表現を変更して画像以外の URL のみを置き換えることです。

ありがとうございました。

4

3 に答える 3

0

これがあなたが探しているものであることを願っています

解決策 1:

<?php
$str="http://imgur.com/gallery/TpGvHBL http://i.imgur.com/TpGvHBL.jpg";
$new_str=explode(" ",$str);
$str="<a href=".$new_str[0]." target=_blank>".$new_str[0]."</a>";
$str.=" <img src=".$new_str[1]." />";
echo htmlentities($str);

出力:

<a href=http://imgur.com/gallery/TpGvHBL target=_blank>http://imgur.com/gallery/TpGvHBL</a> <img src=http://i.imgur.com/TpGvHBL.jpg />

解決策 2:

<?php
//$str='http://imgur.com/gallery/TpGvHBL';
$str='http://i.imgur.com/TpGvHBL.jpg';
if(is_array(getimagesize($str)))
{
echo "Image<br>";
    $str="<img src=".$str." />";
}
else
{
    echo "Link<br>";
    $str="<a href=".$str." target=_blank>".$str."</a>";
}
echo htmlentities($str);

出力:

Image
http://i.imgur.com/TpGvHBL.jpg
于 2013-10-26T09:47:18.030 に答える
0

@hamza の RegExpは、引用符や括弧など、URL に属することができないいくつかの記号を見逃しています。

これを変更することをお勧めします:

~\b(?:https?|ftp|file)://\S+~i

これに:

~\b(?:https?|ftp|file):\/\/[^\s"'(){}<>|\\^~`]+~i
于 2019-04-18T10:26:23.890 に答える