Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Oznaczanie imion
sadistic_son
post 19.03.2024, 09:20:56
Post #1





Grupa: Zarejestrowani
Postów: 1 481
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


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 19.03.2024, 10:05:16
Post #2





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
Dołączył: 27.12.2004




pokaz jak to robisz teraz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 19.03.2024, 17:26:03
Post #3





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

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


  1. $imiona=array(' Adam ',' Adama',' Adach,',' Adachowi','Michał','Michałem');
  2. $span_imiona=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>');
  3.  
  4. // while wyświetlający rekordy z postami a wewnątrz pętli:
  5. $row['3']=str_ireplace($imiona,$span_imiona,$row['3']);

Oczywiście te tablice mają dużo więćej elementów. Zostawiłem tylko kilka. Imion mam kilka, plus każdy ma jakąś ksywkę i jej warianty, plus wszystko odmienione przez przypadki to daje kilkaset elementów.
W sumie mogę jeszcze elementy niezmienne, tj '<span class="' oraz '</span>' wywalić przed nawias smile.gif

Ten post edytował sadistic_son 19.03.2024, 17:28:15


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 19.03.2024, 17:50:18
Post #4





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
Dołączył: 27.12.2004




ok, powinienes uzyc preg_replace. to uzywa wyrazen regularnych i zalatwiloby tez twoj problem z "spadam"


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 19.03.2024, 18:52:18
Post #5





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

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


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?


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
Tomplus
post 20.03.2024, 00:31:52
Post #6





Grupa: Zarejestrowani
Postów: 1 838
Pomógł: 226
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
Salvation
post 20.03.2024, 15:19:26
Post #7





Grupa: Zarejestrowani
Postów: 344
Pomógł: 70
Dołączył: 15.07.2014

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


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.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 17:07