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;
}
?>
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
Listing
niema
Dodano przez: igor
Ranga: Administrator serwisu Punktów: 0
Ranga: Administrator serwisu Punktów: 0
Komentarze użytkowników
:: 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