Loading:


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.



Napisz Artyku³

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);
?>




Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
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


    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2020 v.1.5 | design: diviXdesign & rainbowcolors