Autor Zpráva
HajekJirka
Profil
Dobrý den,
potřeboval bych poradit s jedním reg. výrazem.

Kde prosím příjdou zpětné lomítka?

if (preg_replace("/(?<!;)((http|https)://[[:alnum:]]+([-_.]?[[: alnum:]])*.[[:alpha:]]{2,4}(/{1}[-_~;:?=\%?.+A-Za-z0-9]*)*)/U","<a href='2'>2</a>", $m)) {
echo "ok";
}


Když to nechám takto, tak mi to vypíše:
Unknown modifier '/' in ...

Když přidám zpětné lomeno před první lomeno, tak to píše:
Delimiter must not be alphanumeric or backslash in ...

Už si opravdu nevím rady. Budu vděčný za jakoukoliv radu.

Zkoušel jsem přidat lomítka snad všude, kde to jde, ale bezvýsledně.

A ještě jeden dotaz.
Co znamená to /U v tom výrazu?


Mnohokrát děkuji za pomoc.
MzM
Profil
co to má dělat? najít adresu a zaměnit za odkaz? (asi jo)
co má být část (?<!;)
/U - str reg výraz se snaží zabrat "co největší možný vzorek", pokud má např .*, je to naprosto celý řádek. Modifikátor /U říká, že se reg. výraz bude chovat opačně. Bude tedy brát minimum.
když odstraníš to U pokonci reg výrazu a před všechny / dáš asi bych ještě smazal mezeru před alnum, pak před předposlední otazník (asi) a umaž to (?<!;), tak by to mohlo fungovat. Ale zdá se mi to zbytečně složité.
Zkus zjednodušené:

$m=preg_replace("/((http|https):¨\/\/[^ ]+)/","<a href='$1'>$1</a>", $m)

nebo se podívej do dokumentace na preg_match(), tam v uživatelských komentářích určitě najdeš něco, co ti pomůže.
HajekJirka
Profil
co to má dělat? najít adresu a zaměnit za odkaz? (asi jo)
ANO přesně tak.

Zkusím to teda podle Vašeho příkladu.
Děkuji.
HajekJirka
Profil
MzM
Zkusil jsem tu Vaší verzi výrazu a stále to nefunguje.

Kde příjdou zpětné lomítka?

Zkoušel jsem snad všechny možnosti a pořád to píše buď:
Delimiter must not be alphanumeric or backslash in ...
nebo
Unknown modifier '/' in ...

Kde dělám chybu?

Děkuji za odpověď.
bukaj
Profil
imho to asi bude chtít oescapovat lomítka uvnitř výrazu:

$m=preg_replace("/((http|https):\/\/[^ ]+)/","<a href='$1'>$1</a>", $m)
HajekJirka
Profil
bukaj
Díky moc.
Nevím proč jsem tam cpal zpětné lomítko i na to poslední lomeno.

Ještě jednou díky.
MzM
Profil
...nj, ona se ta zpětná lomítka vytratila... sorry...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0