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: 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


      • 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-2025 v.1.5 | design: diviXdesign & rainbowcolors