shpaque
16.01.2018, 17:57:58
Witam dzisiaj

pytanie mam - mam zmienną, która przechowuje imię i nazwisko - nie byloby problemu gdyby ktos np nie podawal dwóch imion, albo mial imie "Ludwik von Bethoven" lub "Castro vel Diana von Schlockenhaus-Mardid"
dlatego pytam jak znalezc slowo po ostatniej spacji?
nospor
16.01.2018, 18:03:56
SmokAnalog
16.01.2018, 18:10:05
A ja powiem tak: przechowując w jednej zmiennej imię i nazwisko godzisz się na to, żeby nie było wiadomo, które to imię, a które nazwisko. Co z tego, że jedna pani nazywa się Anna Maria Jopek, skoro druga nazywa się Karolina Korwin Piotrowska (tak, bez myślnika)?
Pyton_000
16.01.2018, 18:15:44
Albo np.
Poza tym to co wyżej napisał @Smok. Do tego dojdzie że ktoś pisze raz nazwisko a potem imię, a czasami odwrotnie...
shpaque
16.01.2018, 18:20:16
no na to juz wplywu nie mamy przeciez...
nawet jak robie w formularzu oddzielnie imie i nazwisko zdarzalo sie ze gosc mi wpisywal w plu imie - imie i nazwisko, a w polu nazwisko - nazwisko...
takze mialem: "Stefan Krawężnik Krawężnik"
SmokAnalog
16.01.2018, 18:21:49
Dokładnie tak. Dlatego powinny być osobne pola do podawania tych danych. A jeśli już koniecznie musi być razem, to jakiś żywy człowiek powinien tego doglądać na bieżąco i poprawiać. Widzę to tak: skrypt, który rozdziela automatycznie, jeśli imię istnieje w bazie imion, a nazwisko nie. Jeśli na odwrót, to też automat rozwiązuje jako nazwisko imię. W sytuacjach spornych sprawa nie jest rozwiązana i czeka na klepnięcie od żywego człowieka. Ale serio serio - jeśli masz formularz, to zrób dwa osobne pola (imię i nazwisko) lub trzy osobne pole (pierwsze imię, drugie imię i nazwisko).
Szpaczku - taki błąd użytkownika jest jednak znacznie łatwiejszy do skorygowania. Te osobne pola to nie jest wyprawa na Mount Everest - po prostu jest to lepszy formularz. Inna sprawa, jeśli nie potrzebujesz znać czyjegoś imienia. Wtedy imię i nazwisko w jednym polu jest okej, bo jakkolwiek ktoś się podpisze, stanowić to będzie tylko informację do wglądu.
shpaque
16.01.2018, 18:26:31
nie generalnie mi to jest potrzebne do sortowania po naziwsku kiedy mam imie i naziwsko razem ;`) tylko do tego
SmokAnalog
16.01.2018, 18:28:06
No i w porządku, tylko przygotuj się na całkiem sporo błędów. Sortujesz w tablicy PHP czy w bazie danych? Bo to samo można zrobić bezpośrednio na bazie.
shpaque
16.01.2018, 18:31:58
na szczescie w tablicy php
nospor
16.01.2018, 18:34:12
Cytat
na szczescie w tablicy php
zmienisz zdanie jak przyjdzie ci pracowac z wieksza iloscia danych.
shpaque
16.01.2018, 18:37:11
wtedy dam oddzielnie imie i naziwsko tu bede mial finalnie ok 400 osob
trzczy
16.01.2018, 19:11:36
Jeszcze sposób nr 50

preg_replace('/.*\s(?=\w)|\s/', '', ' fdsafasd fdsadfsaf fdsa fdsa Obama ') ); //string(5) "Obama"
https://3v4l.org/nakiR
SmokAnalog
16.01.2018, 19:15:47
Jak już robisz wyrażenie regularne, to rób to chociaż jak najprościej. Wystarczy zwykłe
preg_match z wzorcem
[^\s]+$ - bez nawiasów i innych pierdół.
Ale to nie jest zadanie dla wyrażenia regularnego. Ani nie będzie czytelnie, ani wydajnie.
trzczy
16.01.2018, 19:36:18
@SmokAnalog, twój regex można napisać prościej:
\w+$
ale on i tak nie uwzględnia spacji po nazwisku. A do tego funkcja preg_match nie zwraca stringa, tylko integer. Stringa trzeba wyciągać z tablicy.
SmokAnalog
16.01.2018, 19:50:04
Celowo nie zrobiłem \w+$, bo każdy nie-biały znak powinien być uznany za część nazwiska, chociażby po to, żeby zobaczyć w nim śmieci. Tak na logikę.
trzczy
16.01.2018, 19:55:37
To o czym piszesz też można skrócić:
\S+$
zaś to, czy uznać nazwisko z cyfrą w środku, to rzeczywiście do dyskusji.
SmokAnalog
16.01.2018, 19:59:04
Tu masz rację, zapomniałem o \S.
Pyton_000
16.01.2018, 21:23:35
Pieprzycie Panowie... Najlepszym rozwiązaniem będzie postawienie JVM i odpalenie tego w Elasticsearch a potem obróbka w Pythonie. szybko, łatwo, przyjemnie...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.