RV
HackForum

| | |  |  | ahoj, mám takový problém. Potřebuji vytvořit odstavce z textu za pomoci
 netisknutelných znaků. Tedy, příklad textu je:
 
 "
 Nějaký hezký text
 \r\n\r\n
 Nějaký hezký text
 \r\n\r\n
 navrtává konstrukci textu dalšího.
 "
 
 a regulární výraz pro převedení všech odstavců kromě posledního je:
 
 $this->str = preg_replace("#(.*)\r\n\r\n#","<p>$1&
 lt;/p>", $this->str);
 
 Příklad se převede na
 
 "
 <p>Nějaký hezký text</p><p>Nějaký hezký text</p>navrtává konstrukci textu
 dalšího.
 "
 
 otázka zní, jak převést poslední kus textu "navrtává..."
 
 vycházím z předpokladu, že ta poslední část bude začínat </p> a následně ji od
 těch ostatních rozliším tak, že se v něm nebude nacházet </p>
 
 k mému zklamání to ovšem nefunguje jak si představuji.
 
 $this->str = preg_replace("#</p>(.*[ˇ</p>])#
 ","<p>$1</p>", $this->str);
 
 po tom co to proženu tímto vypadá html takto:
 "<p>Nějaký hezký text<p><p>Nějaký hezký text</p></p>navrtává konstrukci textu
 dalšího."
 
 což je úplná blbost:(.
 
 Nemůžu si s tím RV poradit, nevíte jak na to? Díky.
 
 ----------
 [link]
 
 [link]
 
 Někdy kokot kokotem není, někdy je to prostě jenom pták.
 (odpovědět)
 |  | | qteck |  |  |  364250869 | 7.12.2011 17:54 | 
 | 
 | 
 | 
| | |  |  | Ja bych to pres explode() rozsekal do pole a pak to proste cyklem projel a poskladal: 
 $vysledek.="<p>".$pole."</p>";
 (odpovědět)
 |  | | StorM Troop3r | 89.190.52.* | 7.12.2011 18:22 | 
 | 
 | 
 | 
| | |  |  | Argh... Zabit!
 $vysledek.="<p>".$pole!i!."</p>
 ";
 
 ! si nahrad za hranaty zavorky... Se mi to v predchozim postu prevedlo jako BB kod....
 (odpovědět)
 |  | | StorM Troop3r | 89.190.52.* | 7.12.2011 18:24 | 
 | 
 | 
 | 
| | |  |  | tak máš pravdu, možnost takového řešení existuje, ale proč nepoužít elegantnější kód v podobě RV s preg_replace a ušetřit tak pár řádků. 
 navíc, mě podoba toho regulárního výrazu zajímá, nicméně, pokud to dnes nevyřeším udělám to jak říkáš.
 
 Takže pokud má někdo nějaký nápad sem s tím :-).
 
 Díky.
 
 
 ----------
 [link]
 
 [link]
 
 Někdy kokot kokotem není, někdy je to prostě jenom pták.
 (odpovědět)
 |  | | qteck |  |  |  364250869 | 7.12.2011 18:49 | 
 | 
 | 
 | 
| | |  |  | Ahoj, Peťo 
 
 function odstavce($text) {
 preg_match_all("~.*[^\s]+.*~", $text, $match);
 $match = array_map("trim", $match[0]);
 $match = implode("</p><p>", $match);
 return trim($match) == "" ? "" : "<p>$match</p>" ;
 }
 
(odpovědět)
 |  | | kolarcz...... | 90.179.26.* | 7.12.2011 19:12 | 
 | 
 | 
 | 
| | |  |  | Díky to je pro mě ideální řešení :-). 
 ----------
 [link]
 
 [link]
 
 Někdy kokot kokotem není, někdy je to prostě jenom pták.
 (odpovědět)
 |  | | qteck |  |  |  364250869 | 7.12.2011 19:28 | 
 | 
 | 
 |