Autor Zpráva
hugo123
Profil *
Ahojte,

mam jednu obrovsku zahadu:

if (preg_match('/\bABČĎ\b/ui', 'ABČĎ')) echo "OK"; => nevypise OK

if (preg_match('/\bABČD\b/ui', 'ABČD')) echo "OK"; => vypise OK

Prosim Vas, ako je to mozne? Ako mam dosiahnut, aby vzdy vypisal OK?

Vopred dakujem velmi pekne.
Jan Tvrdík
Profil
hugo123:
Musíš mít PHP 5.3.4 a novější. Viz 3v4l.org/s4tHF
hugo123
Profil *
Jan Tvrdík:
A ako to mam vyriesit v starsej verzii prosim Ta? Da sa to?
Jan Tvrdík
Profil
hugo123:
Dohledal jsem ti odpovídající PHP bug. Řešení je zřejmě nepoužívat ty metaznaky, které nefungují správně, jako např. \b.
hugo123
Profil *
Jan Tvrdík:
wow vdaka, takze som v podstate objavil bug v PHP. Hehe ;-)))

Okey, ale ja potrebujem zistit ci sa nejake slovo vyskytuje vo vete. T.j. musi to byt slovo a nie co javiem spojeny string.

Napada ti nejake riesenie?


hugo123:
Inak nejde to ani bez tych znaciek, napriklad:

if (preg_match('/Albínov/u', 'dfgfd g Albinov sadd sad')) echo 'OK'; => nevypise OK

preco?
Borius
Profil
hugo123:
if (preg_match('/Albínov/u', 'dfgfd g Albinov sadd sad')) echo 'OK'; => nevypise OK
>
preco?

Borius:
Protože ‘Albinov’ není totéž co ‘Albínov’.
Tori
Profil
U toho bugu píšou, že unicode vlastnosti znaků by měly fungovat. Zkuste tohle:
if (preg_match('/(?<=^|[^\pL\pN])ABČĎ(?=$|[^\pL\pN])/ui', 'ABČĎ')) (viz manuál)
hugo123
Profil *
Borius:
jasne, ja som sa uz cely poplietol... neda sa reg. vyrazom povedat, aby sa ignorovala diakritika?

Tori:
dakujem vyskusam to
Borius
Profil
hugo123:
jasne, ja som sa uz cely poplietol... neda sa reg. vyrazom povedat, aby sa ignorovala diakritika?
Borius:
Ne, to opravdu nedá. Žádná taková nativní funkce neexistuje. V praxi se to řeší tak, že se převedou všechna písmena s diakritikou na písmena bez diakritiky a pak až se s takovým textem pracuje.
hugo123
Profil *
Borius:
okey, uz som to tak aj spravil. dakujem velmi pekne.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: