Zamiana adresów URL na linki, a adresów z jpg, png, gif na obrazki - Funkcja PHP
Funkcja pobiera jeden parametr text i zamienia każdy ciąg w postaci http://cokolwiek.domena/cokolwiek na link w postaci HTML <a href=" .., a http://cokolwiek.domena/cokolwiek.jpg na obrazek <img src="...
Poniżej przedstawiona jest funkcja z gotowym przykładowym użyciem.
Listing
<?php
function create_link($text){
//tworzymy wzorzec pobierający wszystko o konstrukcji http://cokolwiek.com/coklwiek itd
$wzorzec = '{(http:\/\/[\w\.\-_]+\.[a-z0-9.][^\n\s]*)}';
//sprawdzenie czy zostało odnalezione chodź jedno dopasowanie
if(preg_match_all($wzorzec,$text,$zwrot)){
//pozbywamy sie z tablicy powtarzających się rokordów
$zwrot = array_unique($zwrot);
//Przepisujemy dane do nowej tablicy
$tablica_linkow = $zwrot[0];
//Treaz przefiltrujemy nową tablice i pobierzemy z niej wszystkie linki z jpg gif lub png np http://cokolwiek.com/coklwiek.jpg
$wzor = '(jpg|gif|png)';
$tablica_linkow_z_obrazkami = preg_grep( $wzor, $tablica_linkow );
//pobieramy pod którymi kluczami w tablicy głównej $tablica_linkow są linki do obrazków i je usuwamy bo chcemy 2 tablice jedną z normalnymi linkami drugą z linkami do obrazków
$tablica_kluczy_linkow_z_obrazkami = array_keys($tablica_linkow_z_obrazkami);
//aby to zrobic tworzymy pentle usuwajaca wybrane klucze z tablicy glownej
$ile_tmp = count($tablica_kluczy_linkow_z_obrazkami);
for ($i=0; $i <$ile_tmp; $i++){
$klucz_do_usuniecia = $tablica_kluczy_linkow_z_obrazkami[$i];
unset($tablica_linkow[$klucz_do_usuniecia]);
}
//zwalniamy zmienną
unset($ile_tmp);
//Teraz mamy 2 tablice jedna z linkami druga z linkami do obrazków
//Teraz modyfikacja tekstu wejściowego zaczynami od zamiany linkó z http na adres HTML <a href="adres itd...
$tablica_kluczy_linkow = array_keys($tablica_linkow);
$ile_tmp = count($tablica_linkow);
for ($i=0; $i <$ile_tmp; $i++){
$klucz_do_zamiany = $tablica_kluczy_linkow[$i];
$tablica_linkow[$klucz_do_zamiany] = $tablica_linkow[$klucz_do_zamiany].' ';
$text = str_replace($tablica_linkow[$klucz_do_zamiany],'<a href="'.$tablica_linkow[$klucz_do_zamiany].'">'.$tablica_linkow[$klucz_do_zamiany].'</a>',$text);
}
unset($ile_tmp);
//teraz zmienimy linki do obrazkó na HTML <img
$ile_tmp = count($tablica_linkow_z_obrazkami);
for ($i=0; $i <$ile_tmp; $i++){
$klucz_do_zamiany = $tablica_kluczy_linkow_z_obrazkami[$i];
$tablica_linkow_z_obrazkami[$klucz_do_zamiany] = $tablica_linkow_z_obrazkami[$klucz_do_zamiany].' ';
$text = str_replace($tablica_linkow_z_obrazkami[$klucz_do_zamiany],'<img src="'.$tablica_linkow_z_obrazkami[$klucz_do_zamiany].'" border="0" />',$text);
}
return $text;
}
}
$text = 'Nasz przykładowy test zawiera link do zdjęcia http://www.funkcje.net/obraz.png albo http://www.funkcje.net/obraz.jpg ten tekst ma też linki http://www.funkcje.net/index.php oraz http://www.funkcje.net no i tez bardziej skomplikowane http://funkcje.net/view/3/1/9/index.html działa :)';
echo create_link($text);
?>
function create_link($text){
//tworzymy wzorzec pobierający wszystko o konstrukcji http://cokolwiek.com/coklwiek itd
$wzorzec = '{(http:\/\/[\w\.\-_]+\.[a-z0-9.][^\n\s]*)}';
//sprawdzenie czy zostało odnalezione chodź jedno dopasowanie
if(preg_match_all($wzorzec,$text,$zwrot)){
//pozbywamy sie z tablicy powtarzających się rokordów
$zwrot = array_unique($zwrot);
//Przepisujemy dane do nowej tablicy
$tablica_linkow = $zwrot[0];
//Treaz przefiltrujemy nową tablice i pobierzemy z niej wszystkie linki z jpg gif lub png np http://cokolwiek.com/coklwiek.jpg
$wzor = '(jpg|gif|png)';
$tablica_linkow_z_obrazkami = preg_grep( $wzor, $tablica_linkow );
//pobieramy pod którymi kluczami w tablicy głównej $tablica_linkow są linki do obrazków i je usuwamy bo chcemy 2 tablice jedną z normalnymi linkami drugą z linkami do obrazków
$tablica_kluczy_linkow_z_obrazkami = array_keys($tablica_linkow_z_obrazkami);
//aby to zrobic tworzymy pentle usuwajaca wybrane klucze z tablicy glownej
$ile_tmp = count($tablica_kluczy_linkow_z_obrazkami);
for ($i=0; $i <$ile_tmp; $i++){
$klucz_do_usuniecia = $tablica_kluczy_linkow_z_obrazkami[$i];
unset($tablica_linkow[$klucz_do_usuniecia]);
}
//zwalniamy zmienną
unset($ile_tmp);
//Teraz mamy 2 tablice jedna z linkami druga z linkami do obrazków
//Teraz modyfikacja tekstu wejściowego zaczynami od zamiany linkó z http na adres HTML <a href="adres itd...
$tablica_kluczy_linkow = array_keys($tablica_linkow);
$ile_tmp = count($tablica_linkow);
for ($i=0; $i <$ile_tmp; $i++){
$klucz_do_zamiany = $tablica_kluczy_linkow[$i];
$tablica_linkow[$klucz_do_zamiany] = $tablica_linkow[$klucz_do_zamiany].' ';
$text = str_replace($tablica_linkow[$klucz_do_zamiany],'<a href="'.$tablica_linkow[$klucz_do_zamiany].'">'.$tablica_linkow[$klucz_do_zamiany].'</a>',$text);
}
unset($ile_tmp);
//teraz zmienimy linki do obrazkó na HTML <img
$ile_tmp = count($tablica_linkow_z_obrazkami);
for ($i=0; $i <$ile_tmp; $i++){
$klucz_do_zamiany = $tablica_kluczy_linkow_z_obrazkami[$i];
$tablica_linkow_z_obrazkami[$klucz_do_zamiany] = $tablica_linkow_z_obrazkami[$klucz_do_zamiany].' ';
$text = str_replace($tablica_linkow_z_obrazkami[$klucz_do_zamiany],'<img src="'.$tablica_linkow_z_obrazkami[$klucz_do_zamiany].'" border="0" />',$text);
}
return $text;
}
}
$text = 'Nasz przykładowy test zawiera link do zdjęcia http://www.funkcje.net/obraz.png albo http://www.funkcje.net/obraz.jpg ten tekst ma też linki http://www.funkcje.net/index.php oraz http://www.funkcje.net no i tez bardziej skomplikowane http://funkcje.net/view/3/1/9/index.html działa :)';
echo create_link($text);
?>
Dodano przez: igor
Ranga: Administrator serwisu Punktów: 0
Ranga: Administrator serwisu Punktów: 0
Komentarze użytkowników
Bardzo fajny skrypt. Można zrobić coś na wzór tablicy na Facebooku :)
autor: mdnm | 6687 | 2010-10-16 15:17:06
wszystko ładnie, ale gdy nasz tekst nie będzie zawierał żadnego obrazka ani linku to po prostu się nie wyświetli. Warto w tym przypadku użyć takiego kogu:
- Zobacz kod dodany do tego wpisu
-
<?php
function create_link($text){
//tworzymy wzorzec pobierający wszystko o konstrukcji http://cokolwiek.com/coklwiek itd
$wzorzec = '{(http:\/\/[\w\.\-_]+\.[a-z0-9.][^\n\s]*)}';
//sprawdzenie czy zostało odnalezione chodź jedno dopasowanie
if(preg_match_all($wzorzec,$text,$zwrot)){
//pozbywamy sie z tablicy powtarzających się rokordów
$zwrot = array_unique($zwrot);
//Przepisujemy dane do nowej tablicy
$tablica_linkow = $zwrot[0];
//Treaz przefiltrujemy nową tablice i pobierzemy z niej wszystkie linki z jpg gif lub png np http://cokolwiek.com/coklwiek.jpg
$wzor = '(jpg|gif|png)';
$tablica_linkow_z_obrazkami = preg_grep( $wzor, $tablica_linkow );
//pobieramy pod którymi kluczami w tablicy głównej $tablica_linkow są linki do obrazków i je usuwamy bo chcemy 2 tablice jedną z normalnymi linkami drugą z linkami do obrazków
$tablica_kluczy_linkow_z_obrazkami = array_keys($tablica_linkow_z_obrazkami);
//aby to zrobic tworzymy pentle usuwajaca wybrane klucze z tablicy glownej
$ile_tmp = count($tablica_kluczy_linkow_z_obrazkami);
for ($i=0; $i <$ile_tmp; $i++){
$klucz_do_usuniecia = $tablica_kluczy_linkow_z_obrazkami[$i];
unset($tablica_linkow[$klucz_do_usuniecia]);
}
//zwalniamy zmienną
unset($ile_tmp);
//Teraz mamy 2 tablice jedna z linkami druga z linkami do obrazków
//Teraz modyfikacja tekstu wejściowego zaczynami od zamiany linkó z http na adres HTML <a href="adres itd...
$tablica_kluczy_linkow = array_keys($tablica_linkow);
$ile_tmp = count($tablica_linkow);
for ($i=0; $i <$ile_tmp; $i++){
$klucz_do_zamiany = $tablica_kluczy_linkow[$i];
$tablica_linkow[$klucz_do_zamiany] = $tablica_linkow[$klucz_do_zamiany].' ';
$text = str_replace($tablica_linkow[$klucz_do_zamiany],'<a href="'.$tablica_linkow[$klucz_do_zamiany].'">'.$tablica_linkow[$klucz_do_zamiany].'</a>',$text);
}
unset($ile_tmp);
//teraz zmienimy linki do obrazkó na HTML <img
$ile_tmp = count($tablica_linkow_z_obrazkami);
for ($i=0; $i <$ile_tmp; $i++){
$klucz_do_zamiany = $tablica_kluczy_linkow_z_obrazkami[$i];
$tablica_linkow_z_obrazkami[$klucz_do_zamiany] = $tablica_linkow_z_obrazkami[$klucz_do_zamiany].' ';
$text = str_replace($tablica_linkow_z_obrazkami[$klucz_do_zamiany],'<img src="'.$tablica_linkow_z_obrazkami[$klucz_do_zamiany].'" border="0" />',$text);
}
return $text;
}
else{
return $text;
}
}
$text = 'Nasz przykładowy test zawiera link do zdjęcia http://www.funkcje.net/obraz.png albo http://www.funkcje.net/obraz.jpg ten tekst ma też linki http://www.funkcje.net/index.php oraz http://www.funkcje.net no i tez bardziej skomplikowane http://funkcje.net/view/3/1/9/index.html działa :)';
echo create_link($text);
?>
-
autor: mdnm | 6802 | 2010-10-19 22:20:39
:: Losowe artykuły
:: Wymiana linków
Modowe inspiracje |
Android Gry i Aplikacje |
ZaplanujTransport.pl: Przeprowadzki, transport, aukcje |
Logo dla firmy |
Change Tires - Car Weather Forecast Reminder |
Laminas: MVC Framework for PHP |
IT Books Reviews and Programming: JS, JAVA, PHP, ANDROID, CSS |
Katalog roślin |
Programming articles: JAVA, PHP, C++, Python, JavaScript |
Kancelaria Adwokacka Łukasz Huszno