Autor | Zpráva | ||
---|---|---|---|
halogan Profil |
#1 · Zasláno: 16. 5. 2005, 17:05:00
Dobrý den,
do dneška jsem s regulárními výrazi neměl problém, ale dnes jsem se snažil udělat si takový minimální text2html converter, ale nejde mi tam jeden ereg_replace:
...protože pokud doplním cokoli, tak to nejde. Potřeboval bych prostě <$this->tags[\\1]>\\2</$this->tags[\\1]>, ale nijak se mi to tam nedaří napasovat. Další problém je, že \* z proměnné vystupuje jako holé *, takže takto: <$this->tags[\\\\1]>\\2</$this->tags[\\\\1]> Tam je ten problém, že když to zpracovává, tak to vypíše $this->tags (Array) a pak [\*]. Další potíž je ta, že např. u \*\* toto \\\\1 nelze použít :( Sečteno a podtrženo potřebuji vypsat to \\1 dříve než ten prvek pole. Nechci prosím odpovědi typu: Proveď to cyklem - to je až záchranná metoda. Díky moc za nápady... |
||
Kajman Profil * |
#2 · Zasláno: 16. 5. 2005, 18:06:13
Nejjednoduší mi příjde si nachystat pole regulárních výrazů pro to replace.
Asi nějak $rep[('('.$key.')([^\*\-]+)\1')]='<'.$val.'>\2</'.$val.'>'; No každopádně si raději vše se zpětnými lomítky piš do jednoduchých uvozovek. |
||
halogan Profil |
#3 · Zasláno: 16. 5. 2005, 18:22:35
Samozřejmě bych radši vyřešení problému, ale tohle taky ujde, díky:
|
||
halogan Profil |
#4 · Zasláno: 16. 5. 2005, 18:37:03
Ještě mám jeden menší problém:
na řádku: while(eregi("$tg([^\*\-]+)$tg", $value)) { se mi to cyklí, protože jsem neobstaral, aby $tg bylo na obou stranách stejné. Jde to nějak jednoduše udělat? \\1 nefunguje :/ |
||
Kajman Profil * |
#5 · Zasláno: 17. 5. 2005, 10:01:02
\1 bude fungovat, jen je třeba si ten výraz ozávorkovat, jinak se na něj nedá odkazovat.
while(eregi('('.$tg.')([^\*\-]+)\1', $value)) |
||
Kajman Profil * |
#6 · Zasláno: 17. 5. 2005, 10:19:06
Aha, ona tam závorka vlastně byla. Problém je v tom, že výraz je ve dvojitých uvozovkách a tam se zpětné lomítko píše jako dvě zpětná lomítka. Lepší je to dávat do jednoduchých uvozovek (možná se tomu správě říká apostrofy) - tam člověk neudělá tolik chyb.
|
||
halogan Profil |
#7 · Zasláno: 17. 5. 2005, 16:00:19
Díky moc, moc jsi mi pomohl, nakonec jsem to vyřešil takto (cyklem)
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0