Просмотр поста

.
ramzes
# Koenig (17.02.2017 / 12:47)
ну по поводу тега имГ надо тему отдельную сделать, так как некоторые не хотят грузить к себе картинку и прочие мелочи
функции обработки входящих данных ()
/**
 * @param array $url
 * @return string
 */
function redirect_image_replace($url)
{

    if(preg_match('#^https?://'.$_SERVER['SERVER_NAME'].'#', $url[1])){
        return '<img src="'.preg_replace('|^https?:\/\/'.$_SERVER['SERVER_NAME'].'|i', '', $url[1]).'" alt="" />'; // если не хотим ссылки на свой же сайт, возвращаем пустоту, (рекомендуется, как защита от попыток флуда путем вставки uri в адрес картинки)

    }else{
        return '<img class="out-image" src="/out-image.php?image='.base64_encode($url[1]).'" alt="" />';

    }

}

функция редиректа, переадресовывает и убивает скрипт, воизбежание
/**
 * @param string $image
 */
function redirect_image($image){
    header("Location: ".preg_replace('|^https?:\/\/|i', '//', $image));
    exit();
}


парсим текст на предмет ббкода картинки
$clean_html = preg_replace_callback('|\[img\](https?://[^\[]+)\[\/img\]|i', 'redirect_image_replace', $clean_html);


содержимое out-image.php
redirect_image(base64_decode($_GET['image']));

просто до безобразия, и работает безотказно. вот и все.
кд на ходу адаптировал, т.к. не использую ббкоды давно, но вроде ни где не накосячил
UPD поддерживает http и https
UPD2 все равно, не рекомендовал бы пропускать картинки по хттп