Pogledajte određenu poruku
Staro 08. 10. 2009.   #4
holodoc
član
Certified
 
Datum učlanjenja: 27.11.2007
Poruke: 71
Hvala: 10
12 "Hvala" u 11 poruka
holodoc is on a distinguished road
Default

Citat:
Originalno napisao mb_sa Pogledajte poruku
Zdravo!

Imam tekst zapisan u sljedećem obliku:
Kôd:
$str = 'Neki tekst<br /><br />još malo teksta<br /><br />

<br /><br /> 



<br /><br /> 

';
Ono sto meni treba je:
Kôd:
$str = 'Neki tekst<br /><br />još malo teksta';
Sa
Kôd:
preg_replace('{(<br(\s*/)?>)+$}i', '', $str)
uspijem da skinem sve br tagove sa kraja, ali samo ako izmedju njih nema razamaka, novih redova i slicno.

Imali li neko ideju kako da dobijem rezultirajuci string. Rješenje ne mora da bude čisto regular expression, već i PHP može uskočiti u pomoć.

Pozdrav.
Pošto se <br/> očigledno koristi za formatiranje izgleda sadržaja (što samo po sebi nije dobra ideja) a format sadržaja stringa deluje poprilično promenjljivo (nije zagarantovano da li će biti razmaka između i kako će biti raspoređeni <br />-ovi) regularnim izrazima bi se ovde poprilično teško postigli neki rezultati. Postoje po meni dve opcije:

1) Korišćenje DOMDocumet-a u kombinaciji sa DOMXPath-om za selekciju i manipulaciju ovakvim tipom sadržaja. Prednosti, mnogo veći stepen kontrole nad XHTML sadržajem koje regularni izrazi ne mogu često da postignu. Klasa specijalno pisana za ovakve potrebe. Mana, potrebna je zasebno instalirana ekstenzija (xml) koja obezbeđuje ove funkcionalnosti.

2) Klasičan dobri stari PHP bez regularnih izraza uz malo korišćenja mašte Prednosti, brzo i svuda primenjljivo i to bez korišćenja regularnih izraza. Nedostaci, format stringa ne sme da se menja. Evo primera:
PHP kôd:
<?php
$str 
'Neki tekst<br /><br />još malo teksta<br /><br />

<br /><br /> 



<br /><br /> 

'
;
if(
$brPos strpos($str'<br /><br />')){ //pozicija prve pojave '<br /><br />' u stringu
    
$clean trim(strip_tags($str)); //ciscenje od HTML tagova i 'belih' znakova sa krajeva
    
$out substr_replace($clean'<br /><br />'$brPos0); //'montirani' izlazni string
} else {
    exit(
'Format stringa ne odgovara!');
}
echo 
$out;
?>
Moja preporuka je ipak da se podaci potpuno odvoje od načina na koji se prezentuju i da se koristi CSS za definisanje paragrafa, preloma linija itd.

Poslednja izmena od holodoc : 08. 10. 2009. u 15:09.
holodoc je offline   Odgovorite uz citat