Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从URL创建Img标记_Php_Regex_Url_Image_Preg Replace - Fatal编程技术网

Php 从URL创建Img标记

Php 从URL创建Img标记,php,regex,url,image,preg-replace,Php,Regex,Url,Image,Preg Replace,我想要什么 如果字符串中的URL在URL的末尾包含.jpg(不是字符串),则应使用preg\u replace从中生成图像,否则创建正常链接 例如: 如果我有http://www.example.com/images/photo.jpg然后应将其替换为: 问题: URL以任何方式替换为链接,并且我的正则表达式不起作用:( 我尝试过的: $content=preg\u replace(“/(http:\/\/[^\s]+(?=\.jpg))/i“,”,$content); $content

我想要什么


如果字符串中的URL在URL的末尾包含
.jpg
(不是字符串),则应使用
preg\u replace
从中生成图像,否则创建正常链接

例如:

如果我有
http://www.example.com/images/photo.jpg
然后应将其替换为:

问题:


URL以任何方式替换为链接,并且我的正则表达式不起作用:(

我尝试过的:


$content=preg\u replace(“/(http:\/\/[^\s]+(?=\.jpg))/i“,”,$content);
$content=nl2br(preg\u replace(“/(http:\/\/[^\s]+(?!\.jpg))/m“,”,$content));
$content=preg\u replace('.\b(http://\S+\.jpg)\b#i','.$content);

你不需要四处张望,跟着我走就行了

$content = preg_replace("#(http://[^ ]+\\.jpg(?= |$)#i","<img src=\"$1\" alt=\"$1\"/>", $content);    
$content=preg\u replace(“#(http://[^]+\\.jpg(?=|$)#i”,”,$content);

我认为您在需要向后看时使用了向前看运算符。您可以将
(?=\.jpg)
更改为
(?试试这个

function replace_links($content)
{
    if (preg_match('#(http://[^\s]+(?=\.(jpe?g|png|gif)))#i', $content))
    {
        $content = preg_replace('#(http://[^\s]+(?=\.(jpe?g|png|gif)))(\.(jpe?g|png|gif))#i', '<img src="$1.$2" alt="$1.$2" />', $content);
    }
    else
    {
        $content = preg_replace('#(http://[^\s]+(?!\.(jpe?g|png|gif)))#i', '<a href="$1" rel="nofollow" target="blank" title="$1" class="news-link">$1</a>', $content);
    }

    return $content;
}
函数替换链接($content)
{
if(preg#u match('#(http://[^\s]+(?=\(jpe?g | png | gif)))#i',$content))
{
$content=preg|u replace('#(http://[^\s]+(?=\(jpe?g?png?gif))(\(jpe?g?png?gif))#i','$content);
}
其他的
{
$content=preg#u replace('#(http://[^\s]+(?!\(jpe?g | png | gif)))#i','$content);
}
返回$content;
}
这对我很有效

$parse_img='Hello, http://orbitco-ccna-pastquestions.com/images/Q5.jpg
在上图中,路由器R1有两个点对点'

$parse_img=preg_replace('/(https?:\/\/(.\*)?\\.jpg|png|gif)[\s+]*/i',"< img src=\"$1\" alt = \"$1\">< /img >",$parse_img);

echo $parse_img;
$parse\u img=preg\u replace('/(https?:\/\/(.\*)?\\.jpg\124; png\124; gif)[\s+]*/i',“,$parse\u img);
echo$parse_img;

Suyash

\b
匹配句点前后和其他符号:因此它将匹配
http://something.com/image.jpg.html
等等。难道你不需要避开这些反斜杠吗?Amargohosh的版本也有同样的问题。如果图像替换在链接替换之前,那么它会显示得非常糟糕,如果是在链接r之后eplacement那么它只是一个链接,我应该怎么做?如果图像替换在链接替换之前,我会得到这样的结果:
http://192.168.2.104/images/users/image.jpg“alt=”“rel=“nofollow”target=“blank”title=”http://192.168.2.104/images/users/image.jpg“>”class=“news link”>http://192.168.2.104/images/users/image.jpg“>
嘿!谢谢你的回答:),我用
IF/THEN
尝试过类似的解决方案,但你的更好;),它可以工作,但有两个问题,1.这样我就不能有任何链接不是以
jpg
png
gif
结尾,在
内容中,2.在照片之后有图像类型
。jpg
在plus中以
结尾。jpg
,我不需要它,我也不知道如何使用它我看到你在源代码和alt中加了$2,我删除了它们,然后消失了,但图像没有显示
$parse_img='Hello, http://orbitco-ccna-pastquestions.com/images/Q5.jpg
$parse_img=preg_replace('/(https?:\/\/(.\*)?\\.jpg|png|gif)[\s+]*/i',"< img src=\"$1\" alt = \"$1\">< /img >",$parse_img);

echo $parse_img;