[PHP] Jak zamienić tekst na grafikę, np. uśmiechy tekstowe:-) na buźki graficzne?
Chcesz zamienić tekst na odpowiadającą mu grafikę lub ikonki.
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ę.