[ Dag @ 14.09.2003. 19:21 ] @
Treba da konvertujem html u tekst.

<blockquote>
Line 1
Line 2
Line 3
Line xyz
</blockquote>

ili

<blockquote>

Line 1
Line 2
Line 3
Line xyz

</blockquote>

u

____Line 1
____Line 2
____Line 3
____Line xyz

________
Problem: kolichina linija u <blockquote> je proizvoljna.

Hvala unapred.
[ _owl_ @ 14.09.2003. 22:36 ] @
Cisto da znas resenje ne zavisi od broj linija izmedju <blockquote> tagova )
Ono sto tebi treba je ili jedan lep regularni izraz (ovde sigurno postoje ljudi
koji bi bili ljubazni i da ga napisu) ili mozes peske da ides od linije do linije i da testiras njen sadrzaj (da li sadrzi <blockquote> ili ne). Kada udjes u <blockquote> tag (to ces da registrujes u posebnoj promenljivoj) onda na pocetak svake linije koja ne sadrzi </blockquote> treba da dodas ___. Kada naidjes na liniju koja sadrzi </blockquote> onda si zavrsio sa parsiranjem. Posto sve ovo iskodiras mozes da se pridruzis cika Biliju u pisanju vrhunskih programa (ma programskih paketa bre )

[ bOkIcA @ 14.09.2003. 22:57 ] @
Code:
$trt = preg_replace("/(.*)(<blockquote>)(.*)(<\/blockquote>)(.*)/s","\\3",$trt);


[ bOkIcA @ 15.09.2003. 00:41 ] @
Nisam video da treba da se doda '___' ispred svakog...

...evo ovako bi moglo:
Code:
$trt = "<blockquote>

Line 1
Line 2
Line 3
Line xyz

</blockquote>";


function _jej($jeste){
      return preg_replace("/([^(\r|\n|\r\n)]+[(\r|\n|\r\n)]+)/", "___\\1",$jeste[1]);
}
$trt = preg_replace_callback("/<blockquote>(.*?)<\/blockquote>/s", '_jej',$trt);

echo $trt;
[ Dag @ 15.09.2003. 03:05 ] @
Hvala bokice.

Veci deo problema je kako napisati

$trt = "<blockquote>

Line 1
Line 2
Line 3
Line xyz

</blockquote>";

?

Nishta slichno ovome mi ne radi:

$trt = preg_replace("'<blockquote[^>]*?>.*?</blockquote>'si", "", $str);
ili
$trt = preg_replace("'<blockquote[^>]*>.*</blockquote>'si", "", $str);

A ovo je jako elegantno (funkcija kao range / masiv):
$trt = preg_replace_callback("/<blockquote>(.*?)<\/blockquote>/s", '_jej',$trt);
[ Dag @ 15.09.2003. 03:08 ] @
Hvala Owl:)

Ja to odlichno umem da napishem na 10 nachina u vb(a). Ovde je sve nekako komplikovanije (a kada se napishe, u stvari, jednostavnije).
[ bOkIcA @ 15.09.2003. 05:16 ] @
Sad ja nisam shvatio.
Jel ti to resava problem ili ne?
[ Dag @ 15.09.2003. 10:21 ] @
Citat:
bOkIcA:
Sad ja nisam shvatio...


Da. Sve je ok. Kod:

Code:

$str = implode('',file($myURL));

function bckRepl($str){
  return preg_replace("/([^(\r|\n|\r\n)]+[(\r|\n|\r\n)]+)/", "____\\1",$str[1]);
}
$str = preg_replace_callback("/<blockquote>(.*?)<\/blockquote>/s", 'bckRepl',$str);

echo '<pre>' . $str . '</pre>';


Veliko hvala bOkIcA.
[ bOkIcA @ 15.09.2003. 10:24 ] @
Aaaa, sto mi izmenja moje lepe promenjive?! trt, mrt, jes i ostale

...ma salim se, i nema na cemu.
[ Dag @ 18.09.2003. 03:19 ] @
Pa morao sam da promenim bre:)) A kakav si ti sa engleskim? Evo isti problem samo tezha varijanta (ako English ne ide, slobodno reci - bio mi gotov tekst):

Konvertirati HTML to tekst - ceo output izmedju <pre> i </pre>

Headings
1. All headings (H1-6) are to be indented from left for 8 empty spaces.
2. All headings (H1-6) are to be indented from the top for 2 paras (/n).
2.1. Headings (H1-6) with class 'phead' [<Hx class="phead *.*"*.*>] are to be indented from the top for 1 para (/n).
3. All headings (H1-6) are to be indented from the bottom for 1 para (/n).
4. All headings (H1-6) which are contained <br> inside are to be 'cuted' in lines (lines quantity = <br> quantity) and each line is to be indented from the:
- left for 8 empty spaces;
- top no indent;
- bottom no indent;
- group-top for 1 para (/n);
- group-bottom for 1 para (/n).
5. IF wordwrap (76) break some line inside any [<H1-6>*.*</H1-6>], the second ('broken') line should be intented also (8 empty spaces) but only up to 76 - if break again, the same.

Eto tako...