Autor | Zpráva | ||
---|---|---|---|
Kubista Profil |
#1 · Zasláno: 6. 7. 2012, 22:51:01
Zdravím,
mohl by mi prosím někdo poradit s regulárním výrazem. Snažím se o to, aby nedošlo k nahrazení textu, pokud bude obsahovat pouze prázdné znaky. Následující řešení funguje, ale v případě, že je tam obsažen text, který je odřádkován, tak to nefunguje. Vím, že na tečku lze použít modifikátor, který zahrnuje i "\n", ale jak to udělat v tomto případě? Předem díky $text = preg_replace('~\[b\]([^[:space:]]+)\[\/b\]~iu', '<strong>\\1</strong>', $text); |
||
Amunak Profil |
Místo tečky použij \S, to je opak k \s, což je zástupný znak pro libovolné bílé znaky (mezery, tabulátory, carriage return, ...)
Jestli tě chápu dobře, bylo by to nějak takhle: ~\[b\](\S+)\[/b\]~iu Mimochodem znak / není třeba escapovat.
|
||
Kubista Profil |
#3 · Zasláno: 6. 7. 2012, 23:31:54
Amunak: ono si to právě neporadí s tímhle (kolem "b" jsem dal mezery, aby se to neformátovalo tady na fóru)
[ b ] asd asd asd [ /b ] |
||
Tori Profil |
#4 · Zasláno: 6. 7. 2012, 23:38:23
Kubista:
Šlo by to udělat i jiným postupem: nejdřív odstranit všechny bbcode tagy, obsahující jen bílé znaky, a pak teprv nahrazovat bbcode (už bez kontroly bílých znaků) za HTML. |
||
Kubista Profil |
#5 · Zasláno: 7. 7. 2012, 08:43:59
Tori:
Díky za nápad, to mi vyhovuje nejvíce. |
||
Časová prodleva: 12 let
|
0