Autor | Zpráva | ||
---|---|---|---|
kchrz Profil |
#1 · Zasláno: 8. 9. 2006, 09:17:08 · Upravil/a: kchrz
Dobrý den.
Udělal jsem si redakční systém na stránky na bázi phpBB. Používám poté překlad prostředí pomocí preg_replace. Nic složitého ... $s = preg_replace("/\[U\](.*?)\[\/U\]/","<u>\\1</u>",$s); atd... nicméně se mi nedaří přeložit toto [LIST] [*]xx[/*] [*]xx[/*] [/LIST] Napsal jsem si funkci $s = preg_replace("/\[LIST\](.*?)\[\/LIST\]/","<ul>\\1</ul>",$s); $s = preg_replace("/\[*\](.*?)\[\/*\]/","<li>\\1</li>",$s); ale jasi mi to nefunguje. Kde je prosim chyba? díky moc kchrz |
||
gaminn Profil * |
#2 · Zasláno: 8. 9. 2006, 09:46:44
Neměla by být ta dvězdička v druhém regulárním výrazu escapovaná?
|
||
kchrz Profil |
#3 · Zasláno: 8. 9. 2006, 09:48:29
nevim přesně, jak to myslíš. Navíc on mi nefunguje ani ten překlad pro [LIST]
|
||
gaminn Profil * |
#4 · Zasláno: 8. 9. 2006, 10:30:10
V tom LISTu by žádná chyba být neměla, až na tom druhém řádku:
$s = preg_replace("/\[\*\](.*?)\[\/\*\]/","<li>\\1</li>",$s); |
||
K. Profil * |
#5 · Zasláno: 8. 9. 2006, 12:13:16
gaminn má pravdu a ohledně té chyby v listu.... podobný problém jsem měl v tomto tematu.
Stačí na konec toho regulár přidat přepínač Single line, protože ten text máš na více řádcích. Takže ve výsledku to může vypadat nějak takhle:
|
||
kchrz Profil |
#6 · Zasláno: 8. 9. 2006, 12:50:42
Díky, už to funguje,ale má to stále jednu chybičku. Mám zvlášť fci, která mi vyvolává všechny tyto úpravy textu na bold,underilne,italic ... list. Jedna z nich je ale nl2br();
Takže se mi sice položky změní, nicméně na za každým <li></li> následuje <br>. Pořeboval bych ještě vymazat uvnitř komplexu [LIST] ... [/LIST] všechny odrážky na nový řádek. |
||
kchrz Profil |
#7 · Zasláno: 8. 9. 2006, 13:43:23 · Upravil/a: kchrz
Řekl bych, že jsem to vyřešil. Jen si nejsem jist, zda li odstatečně elegantně :
$s = preg_replace("/\[\*\](.*?)\[\/\*\]/s","<li>\\1</li>",$s); $s = preg_replace("/\[LIST\](.*?)\[\/LIST\]/s","<ul>\\1</ul>",$s); $s = str_replace("<ul><br />", "<ul>", $s); $s = str_replace("</li><br />", "</li>", $s); return $s; Každopádně všem moc děkuji za rady |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0