agen togel terpercaya 10 Situs Bandar Togel Terpercaya Bo Togel Terpercaya Situs Agen Togel Terpercaya Situs Bandar Togel Online Terbesar Dan Terpercaya No 1 Di Asia Agen Judi Togel Online Terbesar Dan Resmi Terpercaya | Gas Togel Bandar Toto Online Terpercaya Dan Terbaik Di Indonesia situs bandar togel terpercaya slot dana slot deposit dana slot demo bandar togel terpercaya Situs Togel Terpercaya Bandar Togel Terpercaya Daftar 10 Situs Bo Togel Terpercaya Situs Togel Online 4D Terpercaya Dan Terbesar Di Asia 10 Situs Toto Togel Online Terbesar Dan Terpercaya Di Indonesia Daftar Situs Togel Terpercaya & Terbesar Resmi di Asia 2023 Daftar Situs Bandar Togel Terpercaya Hadiah 4D 10 Juta Situs Agen Togel Mudah Menang Terpercaya Dan Terbesar Di Indonesia Daftar 10 Situs Togel 4d Online Terpercaya Hadiah 10 Juta Terbesar 2023 Situs Bandar Togel Online Hadiah 4D Terbesar dan Terpercaya Bandar Toto Online Resmi Terpercaya Tahun 2023 di Indonesia Situs Bandar Judi Togel Online Resmi Terpercaya Di Indonesia Situs Bandar Togel Terpercaya Daftar Agen BO Bandar Togel Online Bolak Balik | Judi Togel Prize 123 Bandar Judi Togel Online 4D Resmi Terbesar Dan Terpercaya 10 Situs Judi Agen Togel 4D 10 Juta Terpercaya di Asia 2023 Bandar Togel Online Resmi Terpercaya Dan Terbesar Di Indonesia Daftar Agen Judi Togel Online24jam Hadiah 4D 10 Juta Terpercaya Tahun 2023Situs Bandar Toto Togel Online Terpercaya Dan Terbaik Tahun 2023 Bo Togel Online Terpercaya Dan Terbesar Di Asia Agen Bandar Togel Hadiah 4D Terbesar Dan Terpercaya situs togel terpercaya slot demo pragmatic play gacor slot 4d gacor bandar togel terpercaya situs togel slot4d situs togel terpercaya slot 4d slot luar negeri Situs Agen Togel Online Bet 100 perak Hadiah 4D 10 Juta 10 Daftar Situs Togel Terpercaya Situs Judi Togel Terpercaya Berlisensi Resmi dan Terbesar Di Indonesia Tahun 2023 Situs Bandar Togel Terpercaya di Asia Hadiah 4D 10 Daftar Situs Togel Terpercaya Hadiah 4D Daftar Situs Toto Online Terpercaya Dan Hadiah Terbesar Bandar Judi Toto Online Bet 100 Perak Terbesar dan Resmi Terpercaya slot luar negeri slot 4d slot demo Situs Bandar Togel Terpercaya Hadiah 4D bandar bo togel terpercaya Bandar Togel Terpercaya Bet Bolak Balik Situs Toto Togel Online Terpercaya Dan Terbesar Situs Toto Togel 4D Hadiah 10 Juta Terbesar Resmi Terpercaya 10 Daftar Situs Bo Togel Terpercaya Bandar Togel Online24jam Bet 100 Perak Hadiah 4D 10 Juta Terbesar Daftar Bandar Judi Togel Online Hadiah Terbesar 4D 10 Juta Daftar Situs Togel Online24jam Terbaik Dan Terpercaya Di Asia Situs Bo Toto Online Hadiah 4D Terpercaya Daftar Bandar Situs Toto Togel Online Terbesar dan Terpercaya Di Indonesia Situs Bandar Togel Terpercaya Daftar Agen Togel Resmi Terpercaya dan Hadiah 4D Terbesar Agen Togel Resmi Dan Terpercaya Situs Togel Terpercaya Dan Terbesar Di Asia Mudah JP 10 Situs Bandar Togel Terpercaya Hadiah 4D 10 Juta Situs Bandar Judi Togel Online Terpercaya dan Terbesar Berlisensi Resmi Situs Bandar Togel Hadiah 4D Terbesar Bandar Togel Online 4D Terpercaya Dan Terbesar Di Indonesia Bo Togel Resmi Dan Terpercaya Bet 100 Perak Hadiah 4D 10 Juta Bo Bandar Togel Online Hadiah 4D 10 Juta 10 Situs Togel Terpercaya & Bandar Togel Terbesar 10 Situs Togel Terpercaya Bet 100 Perak Hadiah Terbesar 4D 10 Juta di Asia 2023 situs togel terpercaya Daftar 10 Situs Togel Terpercaya & Resmi Terbesar di Asia Bandar Judi Togel Online Resmi Terpercaya dan Terbesar di Indonesia dan Asia Bandar Togel Hadiah 4D 10 Juta Bet 100 Perak Resmi Dan Terpercaya Situs Bandar Togel Terpercaya Situs Togel Online Bet 100 Perak Terbesar Dan Terpercaya Di Indonesia Daftar Situs Bandar Togel Terpercaya Dan Terbaik Di Indonesia Daftar 10 Situs Togel Terpercaya & Resmi di Asia Situs Agen Bandar Togel Online Terbesar Dan Terpercaya Di Indonesia Bo Togel Terpercaya situs togel terpercaya Daftar Situs Bandar Togel Terpercaya 10 Situs Togel Online Resmi Dan Terpercaya Di Indonesia 2023 slot gacor 4d 10 Situs Togel Terpercaya Togel 4D 10 Juta Agen 10 Situs Togel Terpercaya Gas Togel Bandar Togel Hadiah Terbesar 4D 10 Juta Togel Toto Online Dengan Pasaran Terlengkap Dan Resmi Terpercaya Situs Bandar Togel Toto Online Terbaik Dan Terpercaya Hadiah JP Terbesar Bo Agen Togel Terpercaya Toto Togel Hadiah Terbesar 4D 10 Juta Bandar Togel Online Terbaik dan Terbesar do Indonesia | Gas Togel Situs Agen Toto Togel Online 4D Resmi Dan Terpercaya Daftar Aplikasi Bandar Togel Terbaik Dan Terbesar Agen Bandar Togel Hadiah 4D Terbesar 10 Juta Resmi Terpercaya Situs Agen Togel Terpercaya Bet Paling murah Dan Terbesar Di Asia Daftar Agen Judi Togel Online Terbesar Dan Resmi Terpercaya | Gas Togel bandar togel terpercaya situs togel terpercaya Bo Togel Terpercaya di Situs Togel Terlengkap & Resmi di Asia slot demo Bo Agen Togel Terpercaya Hadiah Terbesar Situs Judi Togel Online Terpercaya Dan Terbesar Di Indonesia Tahun 2023 Daftar Bo Togel Online Resmi Dan Terpercaya Bet 100 Perak Mudah Menang Daftar Bandar Judi Togel Terbaik Dan Resmi Terpercaya | Gas Togel situs togel terpercaya Bandar Togel Terpercaya Hadiah 4D 10 Juta Terbesar & Resmi Situs Agen Togel 4D Terpercaya Dan Resmi Hadiah Terbesar Daftar 10 Situs Bandar Togel Online Hadiah 4D 10 Juta Terpercaya Bandar Judi Togel Online Resmi Terpercaya dan Berlisensi | Gas Togel Daftar 10 Bandar Togel Terbesar Dan Terpercaya Di Indonesia 2023 Daftar 10 Bandar Togel Terpercaya & Terbesar di Asia & Indonesia 2023 Bandar Judi Togel Online Bet 100 Perak Termurah dan Resmi Terpercaya Agen Bandar Judi Togel Terbaik Dan Terbesar Di Indonesia Tahun 2023 Situs Judi Togel Online Hadiah 4D Terbesar 10 Juta Rupiah Bandar Judi Togel Online Resmi Terpercaya dan Terbesar di Indonesia | Gas Togel Daftar Bandar Bo Togel Terpercaya Hadiah 4D 10 Juta Terbesar Di Indonesia Situs Togel 4D online 24 Jam Terpercaya Tahun 2023 Situs Agen Togel Online Resmi Terpercaya & Terbesar Di Indonesia Daftar 10 Situs Togel Terpercaya & Terbesar di Asia Situs Bo Togel Terpercaya & Resmi 4D 10 Juta Terbesar di Asia Agen Bandar Togel Terpercaya 4D 10 Juta Bandar Judi Toto Togel Online 4D Resmi Terpercaya Tahun 2023 Situs Togel 4D Toto Online Resmi Terpercaya dan Terlengkap | Gas Togel Situs Agen Togel Resmi Terbaik Dan Terpercaya Di Indonesia Daftar 10 Situs Bandar Togel Terpercaya & Resmi di Asia Daftar 10 Situs Togel Terpercaya & Terbesar di Asia 2023 Agen Bandar Judi Togel Resmi Terpercaya dan Terlengkap di Indonesia Daftar 5 Bandar Togel Teprecaya Situs Agen Togel Hadiah 4D 10 Juta Terpercaya Dan Terlengkap Daftar Bandar Judi Togel Online Terbesar Resmi Terpercaya di Indonesia Situs Bandar Togel Terpercaya Online 24jam bandar togel terpercaya slot deposit dana 10rb Situs Togel Terpercaya Slot Deposit Dana Slot Gacor slot demo slot deposit dana Bandar Togel Terpercaya slot gacor Slot Deposit Pulsa Daftar Slot Gacor Bandar Togel Terpercaya Slot Dana 10k slot deposit pulsa tanpa potongan slot gacor Bandar Togel Terpercaya Bandar Togel Hadiah 4d 10 juta Bandar Togel Terpercaya Situs Togel Terpercaya live draw toto macau live draw cambodia live draw china live draw hk live draw sgp live draw sdy live draw taiwan 10 situs togel terpercaya Bandar Togel Terpercaya slot deposit dana bandar togel slot gacor Slot Online Pulsa Slot Online Gacor Bandar Togel Terpercaya slot depo 10k Slot Deposit Pulsa Daftar Slot Deposit Dana Bandar Togel Hadiah 4d 10 juta Terpercaya Bandar Togel Terpercaya Slot Deposit Pulsa slot deposit pulsa Live Result SDY Live Result SGP Live Result HK Situs Togel Terpercaya bandar togel terpercaya Daftar Slot Dana Bandar Togel Terpercaya 10 Situs Togel Terpercaya Live Draw SGP Tercepat Hari Ini Live Draw SDY Tercepat Hari Ini Live Draw HK Tercepat Hari Ini Situs Togel Terpercaya Slot Terpercaya Bandar Togel Online Terpercaya Indonesia Daftar Togel Terpercaya Bandar Togel Terpercaya Daftar Slot Situs Togel Terpercaya Slot Pulsa Daftar Bandar Togel Terpercaya Slot Dana Via Dana Slot Gacor Slot Demo Pragmatic slot online Slot Via Dana Bandar Togel Terpercaya Bandar Togel Terpercaya slot deposit pulsa Slot Deposit Dana Bandar Togel Terpercaya Bandar Togel Terpercaya Slot Deposit Pulsa Tanpa Potongan Slot Dana RTP Slot Live Slot Deposit Pulsa Slot Deposit Dana Bandar Togel Terpercaya Slot Deposit Dana Bandar Togel Terpercaya Bandar Togel Bonus Cashback Terbesar Bandar Togel Terperaya Slot Deposit Pulsa Live Draw Tercepat Bandar Togel Terpercaya Slot Deposit Pulsa Tanpa Potongan Slot Deposit Dana Bandar Togel Terpercaya Bocoran Slot Gacor Hari Ini Slot Demo Data HK, Hongkong Pools Bandar Togel Terpercaya Slot Online Demo slot gacor Daftar Bandar Togel Terpercaya Slot Deposit Pulsa Situs BO Togel Terpercaya Situs Togel Terpercaya Prediksi HK Live Draw HK Situs Slot Online ESMI SLOT Bandar Togel Terpercaya Situs Togel Terpercaya Slot Deposit Dana slot gacor 5 Bandar Togel Terpercaya Situs Slot Online Deposit Pulsa Agen Togel Terpercaya Bonus besar 2022 Slot Gacor Depo 10rb Terbaik IRAMA SLOT Daftar Bandar Togel 2022 Terbaik Terpercaya Hongkong slot deposit pulsa Prediksi Togel Prediksi Togel Hongkong Prediksi Togel Sydney Prediksi Togel Singapore Angka Keramat Prediksi HK Prediksi SGP Prediksi SDY Prediksi HK SGP SDY Prediksi Togel HK SGP SDY Ratu Prediksi Master prediksi slot 4d Bandar Togel Terpercaya Tiraijd Data Sdy prediksi HK Daftar Slot Live Draw HK Prediksi HK Prediksi SGP Prediksi SDY Bandar Togel Terpercaya 5 Bandar Togel Terpercaya Daftar Bandar Togel Terpercaya 5 Bandar Togel Terbaik Live Draw Cambodia Live Draw HK Live Draw SGP Live Draw SDY Live Draw HK Live Draw SGP Live Draw SDY Live Draw Taiwan Live Draw Toto Macau Live Draw Toto Macau Data SGP Live Draw Cambodia Data HK Live Draw China Live Draw Taiwan Live Draw SGP Paito SGP Paito HK Paito SDY Data SGP Live Draw HK Live Draw HK 6D Live Draw SGP Live Draw Singapore Live Draw Sydney Live Draw SDY Live Draw Cambodia Live Draw Taiwan Live Draw Toto Macau Paito SGP Bandar Togel Slot Online Togel Online Slot Deposit Pulsa situs togel terpercaya slot 4d slot luar negeri Prediksi HK Prediksi HK Prediksi Togel Live Draw HK Data SDY Situs Togel Bandar Togel Terpercaya Bandar Togel Terpercaya Data HK Live Draw SDY Live Draw Sydney Live Draw Cambodia Live Draw Cambodia Live Draw SGP Live Draw SGP Live Draw Taiwan Live Draw Taiwan Live Draw China Live Draw China Live Draw China Live Draw China Hasil Slot Gacor Data SDY Data SGP Slot Pulsa Bandar Togel Terpercaya Slot Deposit Dana Prediksi HK Slot Deposit Dana Slot Deposit Dana Slot Deposit Pulsa Slot Deposit Dana slot gacor 4d slot luar negeri slot 4d slot luar negeri slot 4d Daftar Situs Bandar Togel Online Terlengkap Dan Terpercaya slot luar negeri slot gacor 4d bandar togel terpercaya situs togel terpercaya slot 4d slot server luar negeri Situs Bo Togel Online Terpercaya situs togel terpercaya
easyDRaw.ru | Поиск и подстановка ссылки

Поиск и подстановка ссылки

09 Янв 2015 / Дарья Рыбалтович

По ходу работы над сайтом у меня появилась задача сделать автоподстановку ссылки при выводе текста, как это делается вконтакте. Т.е., при редактировании ты вводишь текст типа http://site.com/blah-blah, а при выводе уже готового текста вместо этого подставляется ссылка http://site.com/blah-blah. Вообще это же решение годится и просто для получения значения ссылок из текста, для дальнейшей с ними работы (например получения контента с помощью file_get_contents()).

На поиск простого решения в Яндексе у меня ушло несколько часов. Может, конечно, я не там искала, и не тот запрос вводила. Но всем обычно надо наоборот, выцапать содержимое ссылки из тэга <а>.

Я знала, что ищу регулярные выражения, я в них не сильна, так что надеялась найти что-то похожее. Почитав инфу на форумах, определилась с функциями, которые нужны для поиска по шаблону - preg_match_all() и preg_replace(). Функция preg_match_all() подробно она описана тут. А вместо preg_replace() при работе с неопределнным числом вхождений удобнее использовать strtr(). Функция preg_match_all(), как и preg_match() выводет найденные значения в массив, разница в том, что preg_match() берет только первое значение из найденных, а preg_match_all() - все. На выходе мы получаем массив, который задается третьим параметром функции. Потом надо просто этот массив перебрать циклом и каждое вхожение обернуть ссылкой.

Короче, после долгих мучений я пришла к вот такому решению:

function find_link($str){
   if(strstr($str, "http://")){
      preg_match_all("#http://([^),\s\n]*)#", $str, $replace);
      foreach($replace[0] as $r){
         $arr[$r] = "<a href='$r'>$r</a>";
      }
      $res = strtr($str, $arr);
   }
   if($res != NULL) return $res;
      else return $str;
}

Стоит пояснить, что это такая особенность вывода preg_match_all(), значение выводится в массив $replace, но перебираем мы только первый элемент $replace[0], который является подмассивом, т.к. остальные элементы этого массива содержат уже распарсенную строку по разделителю, а нам нужна целая ссылка.

Далее, перебирая этот массив, мы задаем новый массив для подстановки, где ключом является найденная строка, а его значением - эта же строка, но уже обернутая ссылкой.

После выхода из цикла мы вызываем функцию strtr(), которая как раз и выполняем замену в тексте по шаблону. Причем, строкой поиска являются ключи массива, а строкой замены - их значения. Это очень удобно в случае. когда имеем неопределенное количество элементов для замены.

Теперь разберем регулярного выражение #http://([^),\s\n]*)#.

Символ #, которым оно обернуто, - просто символ, можно использовать любой другой / ~ кому на что фантазии хватит :) Типа как обозначение, что это начало и конец шаблона.

http://, указываем,что ищем вхождение с таким началом, оно не меняется.

Блок ([^),\s\n]*) нужен для того, чтобы найти конец ссылки. То есть мы берем все после http://, пока не встретим закрывающую круглую скобку ), запятую, пробельный символ \s или символ конца строки \n.

Это регулярное выражение будет работать для ссылок вида http://site.com/site, http://site.com/site.html, http://site.com/site/index.html и т.д. Для более длинных просто не проверяла.

В самом конце проверяем полученную строку и если она пусто - возвращаем то, что нам пришло на входе функции, т.е. исходную строку. 

Может, решение и не универсальное, т.к. если, например, в конце будет стоять точка (.), то она добавится в шаблон, и мы получим неправильную ссылку. Так что по-хорошему надо бы дописать проверку на концевой символ. Но это уже пусть дорабатывает кто-то другой. Моя задача была сделать быстренькую проверку и подстановку без тонн кода :)

Метки: PHP, Сайтостроение