Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 使用preg_match和str_replace验证链接_Php - Fatal编程技术网

Php 使用preg_match和str_replace验证链接

Php 使用preg_match和str_replace验证链接,php,Php,我正在构建一个简单的博客脚本,允许用户将html放入内容中(我正在使用htmlpurifier)。我希望用户能够发布图像URL,但只能从imgur发布。如何使用preg_match和str_replace以最佳方式接近此方法 例如。如果图像url不是来自imgur,则使用str_替换并删除它 在玩了DOMDocument之后(杰克在聊天中建议改用DOM),我想出了自己问题的解决方案 // let's pretend <img src="" /> is inside content

我正在构建一个简单的博客脚本,允许用户将html放入内容中(我正在使用htmlpurifier)。我希望用户能够发布图像URL,但只能从imgur发布。如何使用preg_match和str_replace以最佳方式接近此方法

例如。如果图像url不是来自imgur,则使用str_替换并删除它


在玩了DOMDocument之后(杰克在聊天中建议改用DOM),我想出了自己问题的解决方案

// let's pretend <img src="" /> is inside content
$content = $_POST['content'];

$doc = new DOMDocument;
libxml_use_internal_errors(true);
$doc->loadHTML($content);
libxml_clear_errors();

foreach ($doc->getElementsByTagName('img') as $img) {
    if (parse_url($img->getAttribute('src'), PHP_URL_HOST) != 'i.imgur.com') {
    $content = preg_replace("/<img[^>]+\>/i", "(invalid image provider) ", $content); 
    echo $content;
    } else {
        echo $content;
    }
}
//让我们假设它在内容中
$content=$_POST['content'];
$doc=新文档;
libxml\u使用\u内部错误(true);
$doc->loadHTML($content);
libxml_clear_errors();
foreach($doc->getElementsByTagName('img')作为$img){
if(parse_url($img->getAttribute('src'),PHP_url_HOST)!=“i.imgur.com”){
$content=preg\u replace(“/]+\>/i”,“(无效的图像提供程序)”,$content);
echo$内容;
}否则{
echo$内容;
}
}

假设您有URL:

$host = parse_url($url, PHP_URL_HOST);
$suffix = 'imgur.com';
if (substr_compare($host, $suffix, -strlen($suffix)) != 0) {
    // not an imgur.com link
}

假设您有URL:

$host = parse_url($url, PHP_URL_HOST);
$suffix = 'imgur.com';
if (substr_compare($host, $suffix, -strlen($suffix)) != 0) {
    // not an imgur.com link
}

你有没有试过?如果是的话,请显示它。检查一下这样做是否可以完成任务?如果(!preg_match('/http:\/\/i\.imgur\.com[^&]+/',$url)){$err='Not valid';}共享您的研究可以帮助所有人。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!谢谢你鼓励我更深入地挖掘自己的想法,呵呵。我分享了我的解决方案,以防将来有人有同样的问题。干杯,你试过了吗?如果是的话,请显示它。检查一下这样做是否可以完成任务?如果(!preg_match('/http:\/\/i\.imgur\.com[^&]+/',$url)){$err='Not valid';}共享您的研究可以帮助所有人。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!谢谢你鼓励我更深入地挖掘自己的想法,呵呵。我分享了我的解决方案,以防将来有人有同样的问题。干杯