Avatar billede blackscorpion Nybegynder
06. maj 2008 - 01:14 Der er 20 kommentarer og
1 løsning

highlight_string og fast bredde.

Hej E.

Sidder og roder lidt med highlight_string og er rendt ind i et problem.
Pr default udskifter den alle mellemrum med   hvilket er helt fint, for at beholde indrykningen.

Det er også helt fint, hvis det ikke var fordi at man er nødt til at sidde og lave sin kode pæn, så den passer til bredden på siden.

Er der nogle måder at tvinge den til at skifte linje og stadig se pæn ud med indrykning osv.

pt har jeg prøvet følgende kode:

<table cellpadding="5" cellspacing="0" style="border: 1px solid #CCCCCC; background-color: #EFEFEF; width: 570px">
<tr>
  <td style="font-size: 11px">

<?php

mysql_connect("localhost","root");
mysql_select_db("alabit");

$result = mysql_query("select * from test");

while($content = mysql_fetch_array($result)) {
extract($content);

echo str_replace("&nbsp;", " ", highlight_string($text, true));
}

?>
  </td>
</tr>
</table>

som i kan se, har jeg bare udskiftet alle &nbsp; med mellemrum, men er gået i stå her.

Nogle gode råd osv, eller er jeg tvunget til at skulle sidde og rykke det pænt sammen ?
Avatar billede coderdk Praktikant
06. maj 2008 - 02:52 #1
Har du prøvet at smide det imellem <pre></pre>?
Avatar billede blackscorpion Nybegynder
06. maj 2008 - 10:10 #2
Nej dog ikke.

Men så vidt jeg kan se, så ryger funktionen ved highlight_string så...

formålet er at have syntax highlight på, men uden at den laver mellemrum om til &nbsp; og stadig beholde indrykningen. :S
Avatar billede coderdk Praktikant
06. maj 2008 - 10:18 #3
Hvad med bare at smide det imellem <div style="overflow:auto"> </div> - Så beholder du al formattering, men der kommer scrollbars på, horisontalt, hvis den er bredere end DIV'en?
Avatar billede blackscorpion Nybegynder
06. maj 2008 - 11:02 #4
heller ikke.

problemet opstår kun hvis der er lange linier i php koden.

og da syntax highlightning er ret vigtigt, så er det lidt øv at den så laver mellemrum om til &nbsp; :S
Avatar billede coderdk Praktikant
06. maj 2008 - 11:07 #5
Hvis jeg laver en:

<div style="width: 500px; overflow: auto"><?= highlight_string( file_get_contents( __FILE__ ) ) ?></div>

Så ser det da fint ud - Der kommer scrollbars, som er inden for bredden osv...

Alternativt skal du løbe teksten igennem, linje for linje og checke bredden, og bryde linjen hvis den er for lang og sætte ekstra mellemrum på de(n) nye linjer ;P
Avatar billede blackscorpion Nybegynder
06. maj 2008 - 11:12 #6
coderdk... jeg kender dig bedre end det her... du burde da lige kunne finde en fiks løsning. :P

kunne et alternativ være at man så koden i den rigtige bredde før man accepterede om den skulle i db'en, for at være sikker på at den ser pæn ud ?
Avatar billede coderdk Praktikant
06. maj 2008 - 11:30 #7
heheh joh, så skal det bare gøres før highlight_string:

    $maxlen = 50;
    $txt = <<<EOT
Det er fedt nok. Det er fedt nok. Det er fedt nok
Dette er en test. Denne linje er mere end 50 tegn lang
Det er fedt nok. Det er fedt nok. Det er fedt nok
EOT;

    if ( preg_match( "/^[^\n]{".($maxlen+1).",}$/m", $txt ) )
    {
        echo "En linje må maksimalt være " . $maxlen . " tegn lang.";
    }
    else
    {
        echo "Ok! :)";
    }
Avatar billede blackscorpion Nybegynder
06. maj 2008 - 11:36 #8
Ahhh det var bedre. :P

Nu bliver jeg måske lidt krævende... men er det muligt at tjekke op om linien fylder mere end f.eks. 300px ?
Avatar billede blackscorpion Nybegynder
06. maj 2008 - 11:38 #9
det jeg tænker på er at f.eks. i fylder jo væsentligt mindre end f.eks. m... og så duer det ikke rigtigt at tjekke om der er mere end 50 tegn, eller hvad man nu skal bruge. :S
Avatar billede coderdk Praktikant
06. maj 2008 - 11:39 #10
Jeg kan ikke lige komme på en nem måde. Så skal du enten tegne teksten med GD-lib (imagettfstring) og bruge imagettfbbox, eller lave noget ajax hejs og få en span til at rapportere dens længde... Det ville være lettere hvis du brugte en font med en fast bredde, som f.eks. courier, så kunne du bare bruge antal tegn til at beregne bredden...
Avatar billede blackscorpion Nybegynder
06. maj 2008 - 11:53 #11
af uransagelige årsager kan jeg ikke få lov at skifte skrifttype på lige netop den del af koden :S

har fjernet alle font-family fra min css, tjekket koden for evt. <font face> tags osv.. nada zip zero.. og kan stadig ikke få lov. :S
Avatar billede blackscorpion Nybegynder
06. maj 2008 - 12:10 #12
nå må jeg kigge på senere.. smid et svar, så får du nogle point.
Avatar billede coderdk Praktikant
06. maj 2008 - 12:18 #13
i fylder lige så meget som m når du bruger en fixed width font som courier ;)
Avatar billede coderdk Praktikant
06. maj 2008 - 12:21 #14
måske i css:

code span {
  font-family: courier;
}

highlight_string outputter <code></code> som faktisk burde være en font som courier...
Avatar billede blackscorpion Nybegynder
07. maj 2008 - 06:07 #15
well kan fortælle dig at det IKKE er courier, for har linie numre på i kode outputtet, og der kan jeg at at første tegn, alt 0'et i 01 ændrer sig, og det er også det.

har prøvet med css og med font face osv. intet virker. :S

men tror lige jeg skal have kigget koden ordentligt igennem, for det er noget jeg har lavet for 8 måneder siden, som jeg har taget op igen.
Avatar billede coderdk Praktikant
07. maj 2008 - 08:38 #16
Kan jeg se en kodestump? For det må være muligt at lave noget CSS ;)
Avatar billede blackscorpion Nybegynder
09. maj 2008 - 19:35 #17
ummm.. prøver lige at finde noget.
Avatar billede blackscorpion Nybegynder
10. maj 2008 - 02:28 #18
har nu kørt en søgning i SAMTLIGE filer.. søgeordene "family" og "face" findes ikke i nogle af dem. :D
Avatar billede blackscorpion Nybegynder
10. maj 2008 - 02:48 #19
øj.. man tænker bedst om natten. :)

dette i min css fik det løst. :)


   
    .phpcode {
        font-size: 12px;
        background-color: #EFEFEF;
        width: 570px;
        padding: 5px;
    }
   
    .phpcode.span {
        font-family: courier;
    }

highlight_string gør voldsom brug af span. lol :)
Avatar billede coderdk Praktikant
10. maj 2008 - 10:17 #20
Det er også det korrekte <font> blev forældet for mange år siden ;)
Avatar billede blackscorpion Nybegynder
10. maj 2008 - 10:28 #21
i know.

Det var nu i tilfælde af at jeg havde fået smidt en ind. :P
som sagt det er 8 mdr siden jeg lavede det. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester