Autor | Zpráva | ||
---|---|---|---|
Matess Profil * |
#1 · Zasláno: 23. 12. 2012, 16:18:41
Ahoj, potřeboval bych poradit jestli mám tento regulár správně?
preg_match_all("/kdo|koho|komu|koho|o kom|kým/mi",$text,$o,PREG_SET_ORDER) Nevím jestli je to správně, ale když je ve větě kdopak, tak to najde taky. Má to tak být? Najde to i když je ve větě asdfkdoasdf. V případě, že to tak být nemá, můžete mi ten výraz upravit tak aby to tak nevyhledávalo? Děkuji za odpovědi. |
||
midlan Profil |
záleží jestli pak ty zájmena chceš vypsat
jestli ano tak: if(preg_match_all('~\\s(kdo|koho|komu|koho|o kom|kým)\\s~is', $text, $zajmena)) { echo 'zájmena byly nalezeny'; //nalezená zájmena jsou v poli $zajmena } else { echo 'zájmena nebyly nalezeny'; } jestli chceš jen vědět jestli se tam nějaké ze zájmen vyskytuje tak stačí: if(preg_match('~\\s(kdo|koho|komu|koho|o kom|kým)\\s~is', $text) ... |
||
Tori Profil |
#3 · Zasláno: 23. 12. 2012, 16:42:14
ad [#2]: Ještě by šlo místo
\\s použít \\b - tak to najde i zájmena na začátku/konci řetězce anebo ta, která mají okolo interpunkci.
|
||
midlan Profil |
#4 · Zasláno: 23. 12. 2012, 19:38:52
[#3] Tori
To je pravda, \b jsem zatím nepoužíval, ale dočetl jsem se že hledá na začátku a na konci slova, takže by to mohlo najít npříklad kohout. V tom případě je asi jediná možnost vypsat interpunkční znaménka a začátek a konec řetězce nějak takhle: '~(?:\\s|\\.|\\?|\\!|^)(kdo|koho|komu|koho|o kom|kým)(?:\\s|\\.|\\?|\\!|$)~is' |
||
Tori Profil |
#5 · Zasláno: 23. 12. 2012, 20:27:23
midlan:
Jde tak použít. Nicméně \\b je jednodušší způsob, jak napsat zhruba tohle: (?:[\\s.?!,;:-]+|^|$) , označuje to hranici slova, kde slovo je cokoli z množiny [a-zA-Z0-9_]+ a možná i některé znaky s diakritikou (nevím jestli podle lokálního nastavení nebo čeho). Zkuste si to. :-)
|
||
Časová prodleva: 3 dny
|
|||
SpotRudloff Profil |
midlan:
Nechci být Grammar Nazi, ale ta zájmena nebyla nalezena. |
||
Matess Profil * |
#7 · Zasláno: 26. 12. 2012, 11:43:05
Děkuji, nějak se s tím poperu.
|
||
Časová prodleva: 11 let
|
0