RkBlog

Hardware, programming and astronomy tutorials and reviews.

Operacje na łańcuchach

Opis łańcuchów tekstowych w PHP i funkcji służących do operowania na nich - przycinania, zmiany zawartości, enkodowania i dekodowania

Do operowania na łańcuchach mamy spory zestaw funkcji umożliwiających nam porównywanie łańcuchów, ich edycję itp. Oto kilka z nich:
- addslashes($lancuch) - poprzedza znaki specjalne odwróconym ukośnikiem - slashem. Stosowane m.in. przy zapisie danych do bazy.
- nl2br($lancuch) - zmienia znaki przejścia do nowej linii na znacznik BR
- strlen($lancuch) - zwraca długość łańcucha
- substr($lancuch, $od, $ile) - funkcja ta zwraca część danego łańcucha zaczynając od pozycji $od o długości $ile - substr($lancuch, 0, 10) - zwróci pierwsze 10 znaków
- str_replace($co, $naco, $lancuch) - zamienia frazę $co na $naco w $lancuch
- strtr($lancuch, array()) - zamienia podane frazy, patrz przykład
- trim($lancuch) - usuwa białe spacje
- strip_tags($lancuch) - usuwa znaczniki HTML, można dodatkowo podać Tagi dozwolone - strip_tags($lancuch, "[TAGI DOZWOLONE]")
- stripslashes($lancuch) - usuwa odwrócone ukośniki, stosowana m.in. gdy odczytujemy łańcuch z bazy danych i wyświetlamy (linki itp. nie będą bez tego działać bo są zaslashowane)
- strrev($lancuch) - odwraca kolejność liter
- strtoupper($lancuch) - zmienia małe litery na duże
- strtolower($lancuch) - zmienia duże litery na małe
- strcmp($lancuch1, $lancuch2) - porównuje 2 łańcuch, zwraca 0 gdy są identyczne

str_replace i strtr

<?php

$foo = 'bla bla bla bla';
$x = str_replace('a', 'b', $foo);
$x = str_replace('l', 'a', $x);
$y = strtr($foo, array('a' => 'b', 'bl' => 'qq'));
strtr pozwala na zamianę wielu fraz w jednym wywołaniu. str_replace tylko jedno. Przy zamiania powyżej 2 fraz w łańcuchu należy używać strtr gdyż rozbudowane strtr jest szybsze od 3 i większej ilości str_replace.

Inne przykłady

<?php

$tekst = 'ala ma kota. Kot "MA" alę';
echo "<b>Start</b>: $tekst<br>";

$tekst = addslashes($tekst);
echo "<b>Addslashes</b>: $tekst<br>";

$tekst = strtoupper($tekst);
echo "<b>strtoupper</b>: $tekst<br>";

$tekst = stripslashes($tekst);
echo "<b>stripslashes</b>: $tekst<br>";

$tekst = str_replace('MA', 'nie ma', $tekst);
echo "<b>str_replace</b>: $tekst<br>";

$a = ' a ';
$b = 'a';
IF ($a==$b)
	{
	echo 'zmienne a i b są identyczne<br>';
	}
else
	{
	echo 'zmienne a i b są różne<br>';
	}

echo '<br><b>Trim[/rk:h]';
$a = trim($a);
IF ($a==$b)
	{
	echo 'teraz zmienne a i b są identyczne';
	}
else
	{
	echo 'zmienne a i b są różne';
	}
RkBlog

14 July 2008;

Comment article