我正在构建一个简单的博客脚本,允许用户在内容中添加html(我使用htmlpurifier)。我希望用户能够发布图片网址,但仅限于imgur。如何使用preg_match和str_replace最好地使用此方法?
实施例。如果图片网址不是来自imgur,请使用str_replace并将其删除。
在玩了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;
}
}
答案 0 :(得分:1)
假设您有以下网址:
$host = parse_url($url, PHP_URL_HOST);
$suffix = 'imgur.com';
if (substr_compare($host, $suffix, -strlen($suffix)) != 0) {
// not an imgur.com link
}