[PHP] regelnummering

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Dit is een methode om regels te kunnnen nummeren op de volgende manier :
-----------
1: regel1text
2: regel2text
3: regel ...
----------
Maar volgens mij moet het echt makkelijker kunnen.
Heeft iemand een idee?
PHP:
1
2
3
4
5
6
7
8
9
10
function addLineNumbers($text){
    $text = str_replace("\t",'  ',$text);
    $lines = explode("\n",$text);
    $out = '';
    $nboLines = count($lines);
    for ($i = 0 ; $i < $nboLines ; $i++){
        $out .= (sprintf('% '.strlen($nboLines).'s',$i+1)) .': ' .$lines[$i] ."\n";
    }
    return $out;
}

[ Voor 11% gewijzigd door vinnux op 09-02-2003 23:26 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Das een goeie :)

Zoals ze dat hie rop dit forum hebben gedaan... hoe :)

Acties:
  • 0 Henk 'm!

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 07-07 13:36
code:
1
2
3
4
5
<ol>
  <li>regel1text</li>
  <li>regel2text</li>
  <li>regel3</li>
</ol>


????

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

PHP:
1
2
function prepend($string) { STATIC $i; return $i++.' '.$string; }
$text = array_map("prepend",explode("\n",$text));

Lijkt me mooier en simpeler?

edit:
sprintf() etc. kunnen natuurlijk nog, maar het gaat even om het idee.

[ Voor 22% gewijzigd door chem op 09-02-2003 23:36 ]

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Het doel is om het in een tekstfile te plaatsen, dus geen html opmaak elementen.

Acties:
  • 0 Henk 'm!

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 07-07 13:36
ok, dan zou ik gaan voor de methode van chem

Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Beste Chem,

Kun je mij misschien even toelichten wat die STATIC aanduiding betekent, die heb ik nog niet gezien.
edit:
Ben er al achter, bah wat een vies aspect toch weer!, wel handig

Trouwens is deze code waarschijnlijk langer en zwaarder. Zal es gaan testen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
function prepend($string) { 
    STATIC $i = 1; 
    return $i++.' '.$string; 
} 

function addLineNumbers($text){
  $text = str_replace("\t",'  ',$text); 
  $lines = array_map("prepend",explode("\n",$text));
  $out = implode($lines );
}
?>

Dan begin ie bij 1 en is de eerste regel niet leeg.

[ Voor 116% gewijzigd door vinnux op 09-02-2003 23:47 ]


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

PHP:
1
2
STATIC $i;
return ++$i.' '.$string;
dan? Vrij triviaal ook verder.
De eerste regel leeg? Waarom zou die leeg zijn?
Het is wel overkill om een array_map() te doen en vv. weer een loop. Beetje dubbelop, met 2 tellers etc., en je string-concat je een ongeluk zo.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
in eerste instantie is $i namelijk niks, leeg, athans bij de eerste versie die je poste.
En deze versie komt niet door de DEBUG modes heen waarbij je alle errors/message/notifies weergeeft.
Ja dan kan je zetten $i = 0;

Ik vind chem zijn manier een goede oplossing om korte code te hebben, maar de executie tijd is 33% langer gok ik zo, omdat er in zijn functie 3 keer een array helemaal doorgelopen moet worden ipv 2 in de originele versie.

[ Voor 103% gewijzigd door vinnux op 09-02-2003 23:55 ]


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

E_ALL compatible is-ie niet nee :P

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
chem schreef op 09 February 2003 @ 23:54:
E_ALL compatible is-ie niet nee :P
En laat ik daar nu net op ontwikkelen.
Zucht ...
Das best moeilijk af en toe.

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 16-09 19:01

Tux

vgouw schreef op 09 februari 2003 @ 23:56:
[...]
En laat ik daar nu net op ontwikkelen.
Zucht ...
Das best moeilijk af en toe.
Maar wel het beste natuurlijk ;)

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Ja dat zeker, het maakt erg begrijpelijke code en als je dan voor een lager niveau dan E_ALL kiest weet je bijna zeker dat je NOOIT errormessages krijgt en dat is wel zo leuk voor klanten toch:?

Acties:
  • 0 Henk 'm!

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 23-06 23:17
PHP:
1
exec("echo \"$text\" > infile; nl < infile > outfile");
;)

En over die PHP code, als je cached naar een text bestandje is het toch niet zo erg dat het wat 'langer' duurt?

[ Voor 19% gewijzigd door Ericston op 10-02-2003 08:52 . Reden: klopte iets niet ]

Pagina: 1