Loading:


    PHP Wyrażenia regularne - Problem z polskimi znakami - rozwiązanie

    Rozwiązanie problemu polskich znaków w wyrażeniu regularnym, opisane na przykładzie pobierania tagów #tag z tekstu.


    Zadanie:

    Mamy napisać skrypt który pobierze z tekstu tagi w formie #tag i zamieni je na linki.

    Opis rozwiązania:

    Do rozwiązania tego zadania użyjemy wyrażeń regularnych w funkcji preg_replace:

    <?php
    function create_tags($text){
    //przed #tag musi być spacja wiec zabezpieczamy sie jeśli ktoś użyje tagu na samym początku
    $text = ' '.$text;

    //To jest nasz wzór pobierający tag łacznie z polskimi znakami
    $wzorzec = '{(\s#[ąćęłńóśźżĄĆĘŁŃÓŚŹŻ[:alnum:]][^\n\s\@\+\-\=\,\.\?\!\#\%\^\&\*\(\)]*)}';

    //to wzró zamiany każdy #tag będzie zamieniony na link tag-nazwa
    $zamiana = '<a href="tag-$1"><b><span class="blue">$1</span></b></a>';

    //wykonanie zamiany
    $text = preg_replace($wzorzec, $zamiana, $text);

    //usuniędzie znaków z początku i końca lini
    $text = trim($text);

    //usunięcie spacji z linku adresowego
    $text = str_replace('<a href="tag- #','<a href="tag-',$text);
    return $text;
    }
    ?>


    Jak widac we wzorcu musieliśmy wypisać wszystkie znaki polskie aby były one akceptowane [:alnum:] odpowiada tylko za wszystkie cyfry i wszystkie litery angielskie


    W rezultacie funkcja create_tags zwraca nam tekst wejściowy z linkami do tagów



    Napisz Artyku³

    Listing

    niema




    Dodano przez: igor
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
      • 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