Re: preg_replace php vysvetlenie a zmena

From: Kamil <sverak (zavinac)>
Date: Sun, 15 Feb 2009 22:29:12 +0100
> $text = preg_replace("'\[b\]([^\[\]<>]+)\[\/b\]'si",
> "<strong>\\1</strong>", $text);
>
> $text = preg_replace("~[^-a-zA-Z0-9_]+~", "", $text); // ponecha iba
> znamky: a-z, A-Z, 0-9 sem by sa hodilo aby nechalo aj medzery
>
> Vie mi prosim vas niekto tieto dva riadky vysvetlit podrobne.
> A ten horny urobit tak aby nahrazdovalo znaky òµ¹è»¾ôä za nlsctzoa a
> nechalo medzery.
> Dakujem.
>
> Nie som programator tak by bolo dobre co najviac podrobne.
> Ak niekto nema cas vypisovat staci aj uprava.
>
> Proste je tam tolko zatvoriek ze neviem kde je koniec a kde zaciatok.
> co je to 'si" ? a \\1 najpodrobnejsie... Dakujem

Je nedìle, sem nebyl v kostele a udìlat dobrej skutek? ;-)

výraz:
$text = preg_replace("'\[b\]([^\[\]<>]+)\[\/b\]'si",
"<strong>\\1</strong>", $text);
vysvìtlení:
v¹echno mezi [b] a [/b] vlo¾í do tagu <strong>tady v¹e</strong>. Nesmí
tam být znaky <,>,[ a ]

podrobnì:
'si = ' tomu se tu¹ím øíká modifikátory
s znamená, ¾e to bere i více øádkù
i ignoruje malý, velký písmena
\\1 je ¾e to tam vlo¾í v¹e co je v závorce ([^\[\]<>]+)

\[b\] je zápis [b] proto¾e hranatá závorka má svùj význam
\[\/b\] je to samý jenom [/b], znak / má zase svùj význam

výraz v závorce ([^\[\]<>]+):
závorky znamenají, ¾e se nìkde pou¾ije (v \\1)
[^\[\]<>] znamená v¹echno kromì znakù []<>
+ mo¾no opakovat - aspoò 1x to tam musí být

výraz:
$text = preg_replace("~[^-a-zA-Z0-9_]+~", "", $text);
znamená, ¾e zlikviduje v¹echno  kromì a-z A-Z a èísel 0-9 dále znakù - a _

jestli tam chce¹ i mezeru, tak staèí, kdy¾ ji tam pøidá¹
$text = preg_replace("~[^-a-zA-Z0-9_ ]+~", "", $text);

To zru¹ení diakritiky nejlíp udìlá¹ tak, ¾e zadá¹ pøed tím výrazem
$text=strtr($text,"òµ¹è»¾ôä","nlsctzoa");

snad je to pochopitelný..

-- 
Cao,
 Kamil
Received on 15. 02. 2009, 22:29 CET

This archive was generated by hypermail 2.2.0 : 15. 02. 2009, 22:29 CET