2013-08-02 2 views
1

Я создаю простой сценарий блога, который позволяет пользователям помещать html в контент (я использую htmlpurifier). Я хочу, чтобы пользователи могли размещать URL-адреса изображений, но только от imgur. Как я могу лучше всего подойти к этому методу с помощью preg_match и str_replace?Использование 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; 
    } 
} 
+2

вы сделали любые попытки это еще? Если да, пожалуйста, покажите это. – Daedalus

+0

Проверьте это http://stackoverflow.com/questions/2143202/any-preg-match-to-extract-image-urls-from-text – cartina

+0

Будет ли что-то подобное выполнять эту работу? If (! Preg_match ('/ http: \/\/i \ .imgur \ .com \ [^ &] +/', $ url)) {$ err =' Недействительно '; } –

ответ

1

Предполагая, что у вас есть URL:

$host = parse_url($url, PHP_URL_HOST); 
$suffix = 'imgur.com'; 
if (substr_compare($host, $suffix, -strlen($suffix)) != 0) { 
    // not an imgur.com link 
} 
Смежные вопросы