Autor | Zpráva | ||
---|---|---|---|
Milkys Profil |
#1 · Zasláno: 8. 4. 2012, 19:37:37
Dobrý podvečer,
doufám, že už máte metličky upleteny a bude mít někdo čas mi pomoci. Potřebuji, aby za h2 nebylo br Mám toto: <h2>Nějaký nadpis</h2> <br/>Nějaký text<br/> <h2>Nějaký nadpis</h2><br/>Nějaký text<br/> <h2>Nějaký nadpis</h2> <br/>Nějaký text<br/> Děkuji za reakce |
||
Alphard Profil |
#2 · Zasláno: 8. 4. 2012, 20:06:14
Jestli jde o to odstranění br, nebylo by lepší vyřešit to v jednom kroku?
$s = preg_replace('~</h2>\\s<br/>~Uis', '</h2>', $in); |
||
Milkys Profil |
#3 · Zasláno: 8. 4. 2012, 20:35:06
Alphard:
Ano, samozřejmě, že bych to rád jen v jednom kroku, ale nejsem guru v php natož v regulárech. Zatím ovládám jen, troufnu si říci základy. Proměná $intro je ten řetězec v prvním příspěvku, který potřebuji nahradit Měl jsem to také podobně: $intro1 = trim("$intro"); $intro2 = preg_replace('~</h2>\s<br/>~', '</h2>', $intro1); echo $intro2; $intro1 = trim("$intro"); $intro2 = preg_replace('~</h2>\\s<br/>~Uis', '</h2>', $intro1); echo $intro2; |
||
Alphard Profil |
[#3] Milkys
To jsou modifikátory. Za regulár se omlouvám, zksute tohle $s = preg_replace('~</h2>\\s*<br/>~Uis', '</h2>', $in); |
||
Milkys Profil |
#5 · Zasláno: 8. 4. 2012, 21:29:16
Alphard:
také druhý pokus nic neudělá. Bez omluv, nejsem cíťa. |
||
Alphard Profil |
#6 · Zasláno: 8. 4. 2012, 21:36:59
[#5] Milkys
Ten už jsem vyzkoušel, když to nejde na první dobrou, radši testnu. Můj kód: <?php $in = "<h2>Nějaký nadpis</h2> <br/>Nějaký text<br/>"; $s = preg_replace('~</h2>\\s*<br/>~Uis', '</h2>', $in); echo $s; Výstup: <h2>Nějaký nadpis</h2>Nějaký text<br/> Jestli to nejde, ukažte text, kam to aplikujete. Napadá mě třeba mezera v br, tj. <br />, ale nechtěl jsem to komplikovat. |
||
Milkys Profil |
Alphard:
mám to na locale. Na vostro bych si to nedovolil. Jak to mohu ukázat? Mezera v br není na tyhle detaily si dávám pozor. Ale řeknu postup jak jsem se k tomu dopracoval, protože tam bude asi něco jiného. Tvůj regulár je funkční, ale ne na můj řetězec. Musím se omluvit já, že buzeruju, ale aspoň nějaký pokrok. Mám toto: function nahrada($vystup) { $pole=array( '<em>' => '', '</em>' => '', '<strong>' => '', '</strong>' => '', '<b>' => '', '</b>' => '', '<a>' => '', '</a>' => '', 'm2' => 'm<sup>2</sup>', 'm3' => 'm<sup>3</sup>', '<p>' => '<br/>', '</p>' => '', '<br>' => '<br/>', '<br/> <br/>' => '<br/>', '<br/><br/>' => '<br/>', '</h2><br/>' => '</h2>', '<br/><h2' => '<h2' ); return strtr($vystup,$pole); } $vstup = "<p> </p> <p>Nějaký text</p><p>Další text</p>"; $vystup = '<h2>Nějaký nadpis</h2>'.$vstup'; $vystup = nahrada($vystup); $vystup = preg_replace('~</h2>\\s*<br/>~Uis', '</h2>', $vystup); echo nahrada($vystup); ?> |
||
DarkMeni Profil |
#8 · Zasláno: 10. 4. 2012, 16:14:17
Jestli jediný co nechceš, je aby proměnná vstup nezačínala html značkou (jakoukoliv), tak můžeš zkusit něco jako:
preg_replace('/^<.*?>/i', '', $promenna); A nebo uživatele omezit třeba jen na některý formáty textů (tučně, kurzívovu, podtrženě, barevně, odkaz, obrázek... - tím vlastně ani nemůže zrušit zbytek stránky (ne)uzavřením třeba <div>), třeba přes bb kódy, a převádět to jen v případě, že je ten bb kód uzavřen (takže html zakázat přes htmlspecialchars nebo strip_tags): preg_replace('-\[(b|u|i)\](.*?)\[/\1\]-is', '<$1>$2</$1>', $promenna);//Regulár, jak by mohlo vypadat převádění jednoduchých bb (ale nejsem si jistej zpětnou referencí ve vzoru, jestli tam je \ nebo taky $)
|
||
Ugo Profil |
#9 · Zasláno: 10. 4. 2012, 16:21:14
OT: co když zadám
<EM>nazdárek ? tyhle náhrady sou vždycky kříž, snažil bych se určit snadný pravidlo pro tebe a to dodržet co nejlehčí cestou, často jsou to kupodivu mnou nemilované pomalé reguláry :) a pokud sou omezení velká, tak vlastní značky a čistě napsaný html úplně vynechat
|
||
Časová prodleva: 4 dny
|
|||
Milkys Profil |
#10 · Zasláno: 14. 4. 2012, 17:38:43
Děkuji.
|
||
Časová prodleva: 12 let
|
0