Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Oznaczanie imion
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.

Ten post edytował sadistic_son 19.03.2024, 09:22:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Tomplus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 884
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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:

  1.  
  2. foreach($json as $format_imienia) {}
  3. $row['3'] = preg_replace("/({$format_imienia}?[a-z]{1,})/", "<span title='{$format_imienia}'>".$odmiana."</span>", $row['3']);


Ale to kropla w morzu zmian.

Np. w tekscie:
Kod
Adam jest na dworze Karola z Adamczychy.
Padam dzisiaj ze zmęczenia.


Wykryje mi Adam, Adamczychy, ale już nie Padam.
Ale jak dodam parametr "/({$format_imienia}?[a-z]{1,})/i" - to już Padam mi oznaczy.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 23:38