Autor Zpráva
Sylar
Profil
Zdravím,

mám takovýto regulár, který má v textu nalézt názvy míst a vytvořit na ně odkaz
preg_replace("/(" . $nazev . "[a-z]{0,5})/i", "<a href=\"/katalog/" . $link . "/\">\$1</a>", $text);

Kvůli skloňování je tam ještě ta část [a-z]{0,5} (pokud např. hledám slovo "hrad", aby to nalezlo i slovo "hrady", "hradem" apod.) .

Potřeboval bych, aby se název hledal bez ohledu na velikost písma, ale ta část kvůli skloňování, aby pak už brala pouze malá písmena. Bohužel identifikátor "i" na konci reguláru způsobí, že se tam berou i velká písmena. Je možné regulár upravit tak, aby case-insenstive bral pouze na text v proměnné $nazev a na zbytek reguláru už ne?
ShiraNai7
Profil
Neopužívej modifikátor "i" na celý výraz, ale pouze v částech, kde to potřebuješ:

"/((?i:" . preg_quote($nazev) . ")[a-z]{0,5})/"

Viz http://www.php.net/manual/en/regexp.reference.internal-options.php
Sylar
Profil
ShiraNai7:
skvělé, díky moc

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:

0