cześć, w mini-forum mam obecnie funkcję oznaczania imion. Generalnie jest zdefiniowana i niezmienna lista użytkowników i imię każdego z nich jest pisane innym kolorem w treści postów na forum. Obecnie mam to zorganizowane w niezbyt elegancki sposób, co prawda działa, ale raczej zużywa zbędne zasoby. Chcę to przerobić. Każde imię oczywiście odmienia się przez przypadki, więc dla takiego 'Michał' mamy 14 przypadków - liczba pojedyncza i mnoga. W tekście użytkownik oczywiście wpisuje imię w poprawnym przypadku, więc pozostaje tylko podmiana z 'Michał' lub 'michał' lub 'Michal' lub 'michal' na <span id="michal">ucfirst(strtolower($wpisane_imie))</span>. Jak to najlepiej rozwiązać?
Dodatkowo wpada problem imienia 'Adam' gdzie zwykłe str_replace spowoduje mi spustoszenie np. w słowie 'spadam'.
Zapodajcie pls pomysły. Dzięki.
pokaz jak to robisz teraz
$imiona=http://www.php.net/array(' Adam ',' Adama',' Adach,',' Adachowi','Michał','Michałem'); $span_imiona=http://www.php.net/array('<span class="Adam"> Adam </span>','<span class="Adam"> Adama</span>','<span class="Adam"> Adach</span>','<span class="Adam"> Adachowi</span>','<span class="Michal">Michał</span>','<span class="Michal">Michałem</span>'); // while wyświetlający rekordy z postami a wewnątrz pętli: $row['3']=str_ireplace($imiona,$span_imiona,$row['3']);
ok, powinienes uzyc preg_replace. to uzywa wyrazen regularnych i zalatwiloby tez twoj problem z "spadam"
Nie bardzo mam pomysł jak. Przecież to też będzie wymagać od groma wyrażeń regularnych wyjdzie tego niewiele mniej niż po prostu powymieniane wszystkich wariantów. No ale ok, i co potem, też to musi być wewnątrz while prawda?
Skoro tak dużo imion i systemów, to należy sobie to zoptymalizować. Np. po cholerę jest <span> w tablicy?
Wykorzystaj sobie jakąś bazę, albo jakąś uproszczoną formę notacji np. JSON:
foreach($json as $format_imienia) {} $row['3'] = http://www.php.net/preg_replace("/({$format_imienia}?[a-z]{1,})/", "<span title='{$format_imienia}'>".$odmiana."</span>", $row['3']);
Musi to być słownik. Najlepiej już z odmianami imion. Wtedy można "kolorować" imiona przez JS-a nawet, żeby przerzucić to na procesor użytkownika.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)