[PHP] Jak zamienić tekst na grafikę, np. uśmiechy tekstowe:-) na buźki graficzne?

0x01 graphic

Chcesz zamienić tekst na odpowiadającą mu grafikę lub ikonki.

0x01 graphic

Wiele serwisów udostępnia fora dyskusyjne, czaty lub księgi gości, gdzie wpisując symbol buźki tekstowej :-) otrzymujemy buźkę graficzną, często nawet animowaną. Nic nie stoi na przeszkodzie, aby w Twoim serwisie użytkownicy również mogli skorzystać z mechanizmu automatycznej zamiany tekstu na grafikę.

I wcale nie muszą to być buźki - jakikolwiek tekst możemy zamienić na odpowiadającą mu grafikę. Można to zrobić łatwo i szybko, zobacz.

<?

$t[":-\)"]="1.gif";

$t[":\)"]="2.gif";

$t[":-\("]="3.gif";

$t[":-\["]="4.gif";

$t[":usmiech:"]="4.gif";

$t["Darek"]="/zdjecia/darek.gif";

$txt = "Ciesze się:-), że Cię widzę:) To też :-( jest :usmiech:!";

while (list($indeks, $wartosc) = each($t)) {

$txt = eregi_replace($indeks, "<img src=\"$wartosc\">", $txt);

}

echo $txt;

?>

Aby dokonać zamiany, trzeba najpierw stworzyć tablicę, w której znajdą się dwie rzeczy - to co zamieniamy i to na co zamieniamy. Stwórzmy tablicę, której indeksy będą tekstem zamienianym, a ich wartości będą odnośnikami do plików graficznych.

Niektóre buźki są mocno zdeformowane ponieważ przed znakami specjalnymi, jak np. nawiasy należy dodać ukośnik, który przywróci znaczenie nawiasu w wyrażeniu regularnym podmieniającym ciągi znaków.

Tworzymy zmienną $txt z przykładowym tekstem - może ona zawierać tekst wpisany do formularza na forum lub w księdze gości. Następnie w pętli while odczytujemy zawartość tablicy podmian i za pomocą wyrażenia regularnego szukamy i podmieniamy poszczególne fragmenty tekstu na kod HTML wstawiający w to miejsce obrazek.

Na końcu wystarczy wypisać wynik na ekran. Jak widzisz, oprócz uśmieszków do tablicy wpisane zostało też moje imię - mogę je podmienić np. na własne zdjęcie, jeżeli będę miał taką potrzebę.