PHP – operacje na ciągach znaków – zamiana liter na małe

komputerek_phpOperacje na ciągach znaków to jedne z popularniejszych zadań programistycznych  realizowanych w typowym projekcie serwisu internetowego tworzonego przy pomocy PhP. Jedną z popularnych operacji wykonywanych na ciągach znaków to konwersja na ciągi złożone jedynie z małych liter. Realizacja tego zadania jest raczej trywialna. Wystarczy, że użyjecie dostępną w PhP komputerek_mysqlfunkcję strtolower() lub w przypadku zamiany pierwszej litery lcfirst().

Zadanie robi się już nieco trudniejsze gdy przyjedzie Wam pracować z ciągami znaków wśród których znajdą się litery odpowiadające znakom diakretycznym charakterystycznym dla danego narodowego alfabetu. Użycie funkcji strtolower oraz lcfirst nie spowoduje że tego typu duże litery będą zamienione na małe. Znaki wykraczające poza zakres liter ‚alphabetic’ są pomijane przez te funkcję.

W takich sytuacjach z pomocą przyjdzie Wam funkcja mb_strtolower($string, $encoding) dostępna w ramach rozszerzenia Multibyte String Functions. Drugi (opcjonalny) argument tej funkcji określa kodowanie znaków konwertowanego ciągu znaków. Pozwala to na obsłużenie praktycznie każdego języka jaki jest obecnie używany w internecie. Warto dodać, że rozszerzenie to nie jest domyślnym rozszerzeniem PhP a co za tym idzie, nie każdy na każdym hostingu możliwe będzie skorzystanie z funkcji mb_strtolower().

W ramach uzupełnienia tematu dodam jeszcze mały tutorial z zakresu MySQL odpowiadający na pytanie: A co zrobić w przypadku, gdy to w bazie danych w jednej z kolumn tabeli mam ciąg znaków, który w trwały sposób chciałbym zamienić na wyrazy składające się tylko z małych liter. Oczywiście można tę operację wykonać po stronie PhP za pomocą funkcji wymienionych wyżej. Jednak znacznie bardziej optymalnym i szybszym rozwiązaniem będzie wykonanie tej operacji za pomocą pojedynczego zapytania UPDATE. Poniżej znajdziecie przykład tego typu zapytania SQL:
UPDATE `tabela` SET `nazwa_kolumny`=LOWER(`nazwa_kolumny`);
Po wykonaniu tego zapytania, we wszystkich rekordach w kolumnie `nazwa_kolumny` znajdą się ciągi znaków składające się tylko z małych liter.

Znaczniki: , , ,

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *


8 × siedem =

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>