Gå til innhold

Fjerne <br> mellom <ul> og </ul>


Anbefalte innlegg

Skrevet (endret)

Bruker FCKeditor (en WYSIWYG-editor) på siden min, men er en liten svakhet i den.

 

Om jeg skal ha en UL-liste som denne:

Overskrift

<ul>

<li>Liste</li>

<li>Liste</li>

</ul>

 

Blir HTMLen slik:

Overskrift<br />

<ul><br />

<li>Liste</li><br />

<li>Liste</li><br />

</ul>

 

Ønsker å fjerne ALLE <br /> fra oversriften og fra <ul> til </ul>

Noen som har noen tips til "angrepstaktikk" på dette problemet?

 

Edit:

Må bare nevne at hele innholdet i tekstboksen er $text og jeg skal ikke fjerne alle <br /> fra $text, bare de i listen. ;)

Endret av ZoRaC
Videoannonse
Annonse
Skrevet

Du ønsker å gjøre slik at alle tingen i li skal stå på rekke? Liste 1 Liste 2 og ikke

 

Liste 1

Liste 2 ?

 

Hvis det kan du vel bare sette li { display: inline } eller ul i css

Skrevet

Når man bruker <ul> lager den en horisontal liste, <ol> lager vel vertikal liste.

 

Det han ville var å fjerne <br /> fra <ul>-listen.

 

Er på jobb nå, så har ikke tid til å fundere på noe lurt.

Skrevet (endret)

Det er helt feil

ul står for unordered list, mens ol står for ordered list.

ol brukes når du skal ha:

  1. Én
  2. To
  3. Tre

  1. Én
  2. To
  3. Tre

  1. Én
  2. To
  3. Tre

mens ul brukes for slike lister:

  • Én
  • To
  • Tre

 

Jeg har dessverre ikke noen god løsning på problemet i første posten, annet enn å gjøre de som har laget WYSIWIG-editoren oppmerksomme på problemet, for det der er feil kode. (Kan aldri i verden tenke meg at den er i nærheten av å validere)

Endret av Nazgul
Skrevet

Nazgul:

Er en lang liste med små bugs i editoren, og utviklerene har begrenset tid til å rette alle.

 

Trenger en workaround i mellomtiden. ;)

 

Ser for meg noe slikt (pseudokode):

$startline = linjenummer for <ul>
fjern siste <br /> fra $startline-1
$endline = linjenummer for </ul>
fjern siste <br /> på alle linjer mellom $startline og $endline

 

Noen som er "drevne" på bruk at disse funksjonen? Har ikke så mye kjennskap til hvilke jeg må bruke... :(

Skrevet (endret)

To linjer kode som fikser det...

 

<? # Variabelen som inneholder sjit som skal renskes opp er $streng
 $streng = explode("<br>", $streng);
 $streng = implode("", $streng);
?>

 

Forresten, siste utgave av FCKeditor legger ikke inn <br>...

Endret av spiffers
Skrevet
To linjer kode som fikser det...

 

<? # Variabelen som inneholder sjit som skal renskes opp er $streng
 $streng = explode("<br>", $streng);
 $streng = implode("", $streng);
?>

 

Forresten, siste utgave av FCKeditor legger ikke inn <br>...

6165967[/snapback]

 

Problemet da er at den fjerner ALLE <br> i $text, de som er over/under <ul>-listen også. :(

 

Har satt FCKeditor til å sette inn <br> ved linjeskift i stedet for å bruke <p> for da blir linjeavstanden "dobbel" når man trykker <enter>...

Skrevet

Denne sletter alle <br /> mellom <ul> og </ul> og etter overskrift, men tar ikke høyde for "nestede" lister:

$text = preg_replace("/<br \/>(?=\s*<ul>)|<br \/>(?=(?:(?!<ul>).)*<\/ul>)/s","",$text);

Denne sletter alle <br /> etter </li>,<ul> og overskrift, men ikke alle mellom <ul> og </ul>. Det kan jo være ønskelig med linjeskift mellom <li> og </li>:

$text = preg_replace("/<br \/>(?=\s*<ul>)|(?<=<ul>)<br \/>|(?<=<\/li>)<br \/>/s","",$text);

Skrevet

Takk stiber!

Samme med "ul { display: list-item }" ble det akkurat slik jeg ønsket! :D

 

Drev å prøvde meg litt frem jeg også, og fikk til en fungerende kode for 15 min siden, men dine var jo mye enklere enn min:

$remove_str = "<br />";
$str_len = strlen($remove_str);

$start = strpos($text, '<ul>') - $str_len - 1; 
$end = strpos($text, '</ul>'); 

$remove = substr($text, $start, $end - $start); 
$removed = str_replace($remove_str, '',  $remove); 
$text = str_replace($remove, $removed,  $text);  

 

Btw,

prøvde begge kodene dine, men ser ikke noe forskjell?

Skrevet

Hmm...

Ser ut til at buggen ligger i mitt script for visning etterpå for det kjører visst en nl2br($text).

 

Fjernet den og alt ble mye bedre! :blush::innocent::whistle:

Skrevet
Har satt FCKeditor til å sette inn <br> ved linjeskift i stedet for å bruke <p> for da blir linjeavstanden "dobbel" når man trykker <enter>...

6167698[/snapback]

Linjeavstanden til en <p> er jo fryktelig lett å endre ved hjelp av CSS, så jeg kan ikke skjønne hvorfor du erstatter <p> (som er helt riktig) med <br> (som er helt feil).
Skrevet

Vet ikke om man kan endre hvordan <p> skal oppføre seg i redigerings-feltet til FCKeditor? De som skal bruke dette kan null HTML og det er derfor viktig at artikkelen blir seende ut som den gjør under redigering, og brukerne forventer at man flytter seg en linje i gangen når man trykker <enter>, som i Word...

 

Men, om man kan få den til å flytte seg "normalt" i FCKeditor er det seff ingen grunn til å ikke bruke <p>... ;)

Skrevet (endret)

<br> er linjeskift, <p> er paragraf. De har forskjellig funksjonalitet.

<p> er to linjeskift fordi det er slik du deler inn paragrafer, dvs. én blank linje imellom paragrafene, mens <br/> kun er linjeskift for å kunne bryte opp en tekst.

 

Av den grunn har du heller ikke lov til å putte <br /> utenfor et blokkelement.

 

Eks.:

http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_br

Endret av Nazgul
Skrevet
og brukerne forventer at man flytter seg en linje i gangen når man trykker <enter>, som i Word...

6194020[/snapback]

Når man trykker <enter> i Word, skifter man faktisk avsnitt. Hvis man bare skal skifte linje, trykker man <shift>+<enter>.

Det er bare det at Word ikke har lagt inn ekstra avstand mellom avsnittene som standard for at det skal være enklere å bruke for nybegynnerene.

Når man skriver en tekst, skal man faktisk ikke trykke <enter> andre ganger enn når man skifter avsnitt (selv om man på barneskolen lærer å begynne ny setning på ny linje :roll: ).

Hvis du går inn i Word og skriver litt forskjellig der du veksler mellom å bruke <enter> og <shift>+<enter>, og deretter går på Format -> Avsnitt og setter avstand etter, så vil du se forskjellen mellom linjeskift og avsnittsskift.

 

endrebjorsvik:

Hvordan endrer man til "normal" linjeavstand med CSS? :)

6239312[/snapback]

p {
 line-height: 1.5em;
}

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...