RV

HackForum

RV#
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 | E-mail | Website | ICQ 3642508697.12.2011 17:54
re: RV#
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
re: RV#
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
re: RV#
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 | E-mail | Website | ICQ 3642508697.12.2011 18:49
re: RV#
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
re: RV#
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 | E-mail | Website | ICQ 3642508697.12.2011 19:28

Zpět
 
 
 

 
BBCode