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