我正在构建一个简单的博客脚本,允许用户将 html 放入内容中(我正在使用 htmlpurifier)。我希望用户能够发布图片网址,但只能来自 imgur。我怎样才能最好地使用 preg_match 和 str_replace 来处理这种方法?
例子。如果图像 url 不是来自 imgur,则使用 str_replace 并将其删除。
在玩弄了 DOMDocument 之后(Jack 在聊天中建议改用 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;
}
}