Autor | Zpráva | ||
---|---|---|---|
Neas Profil |
#1 · Zasláno: 9. 2. 2011, 00:28:35 · Upravil/a: Neas
Ahoj.
Chtěl jsem do své návštěvní knihy přidat funkci, která automaticky převede odkazy na <a href="neco">neco</a>. Na internetu jsem našel regulární výraz, pomocí kterého se mi povedlo sesmolit toto: $telo = preg_replace("@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@", "<a href='$1'>$1</a>", $telo); A také to funguje. Ale chtěl bych také, aby moje návštěvní kniha uměla vyhodnocovat BBcody. Ty se mi zatím dařilo vytvářet úspěšně, tedy například: $telo = preg_replace("(\[b\](.+?)\[\/b\])", "<strong>$1</strong>", $telo); Nicméně narazil jsem na problém při vytváření [url] BBcodu. Aby mi výše uvedený kód nepřeměnil i odkazy uzavřené mezi [url] a [/url], potřeboval bych jeho regulární výrazu nějak upravit, leč tady mě již znalosti zradily. Budu vděčný za vaše rady, děkuji EDIT: a když už se ptám zrovna na tohle, rád bych se také dozvěděl, jaký je rozdíl mezi (.+?) a (.*). Zkoušel jsem oboje (viz. druhý uvedený kód) a oboje fungovalo stejně. + také jsem nikde nenašel, co vlastně znamená ten @ v prvním kódu |
||
Joker Profil |
#2 · Zasláno: 9. 2. 2011, 08:36:07
Tady jsou regulární výrazy pro převod BB-značek.
Neas: „jaký je rozdíl mezi (.+?) a (.*)“ .+ je jeden nebo více libovolných znaků. .* je žádný, jeden nebo více libovolných znaků. V .+? ten otazník je líný kvantifikátor. V líném režimu se vybere nejkratší řetězec vyhovující regulárnímu výrazu. Normální (nenasytný) režim bere naopak nejdelší řetězec. Příklad- nenasytný režim, výraz: #[>b].*[/b]# vybere zvýrazněnou část:
začátek [b]něco[/b] něco jiného [b]něco dalšího[/b] konec #[>b].*?[/b]# vybere:
začátek [b]něco[/b] něco jiného [b]něco dalšího[/b] konec |
||
Neas Profil |
#3 · Zasláno: 9. 2. 2011, 14:09:39 · Upravil/a: Neas
Joker:
aha.. a jak docílit toho, aby mi to vzalo takhle? začátek [>b]něco[/>b] něco jiného [>b]něco dalšího[/>b] konec EDIT: po testech jsem zjistil, že (.+?) mi to vybere, jak potřebuji. To už je tedy jedno, funguje to, teď bych rád vyřešil svůj problém s převodem URL |
||
Časová prodleva: 13 let
|
0