ФорумПрограммированиеPHP для идиотов → Регулярки для внешних ссылок

Регулярки для внешних ссылок

  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 2 октября 2009 г. 22:42

    Родил тока

    #<a.*href=["']{0,1}http://(.*?)["']{0,1}>#Ui[/quote]
    но это хуйня, т.к. вытаскивает 1 ссылку в строке, остальные не трогает Оо

    подкиньте идей или уже готовых решений, если кто делал
    все умрут, а я изумруд
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 октября 2009 г. 8:36, спустя 9 часов 53 минуты 24 секунды

    я ды подкинул да не помню точно ссылку на статью где я это описывал ….
    Спустя 140 сек.
    вот мое готовое решение, дашь кому нить - упию =))

    <?php
    ob_start("encodeurls");

    function encodeurls($content)
    {
    $regex = "#(<(a|img|embed) [^>]*?(?:href|src)=\\s*)[\"'](http://[^\"']+)[\"']([^>]*>)#";

    return preg_replace_callback($regex, "encodeurls_callback", $content);
    }

    function encodeurls_callback($match)
    {
    if(strpos($match[0], "noreplace"))
    {
    return $match[0];
    }

    return $match[1].'"/go/'.$match[2]."/".base64_encode($match[3]).'"'.$match[4];
    }


    переписывает все исходящие ссылки на /get/(a|img)/base64url
    Спустя 28 сек.
    + можно отказаться от реврайта в ссылке, если вписать например class="noreplace"
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 3 октября 2009 г. 12:42, спустя 4 часа 6 минут 19 секунд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!