Willkommen in der Webstatt
User-1 am 18.11.06 15:17

Hallo,

ich will sowas wie hier im Forum basteln, also es wird eine function gemacht und in der wird eine Variable mit eingetragen und die function gibt es dan aus, das ist auch einfach, mein problem liegt nun darin wie kann ich die Zeilen zählen die der Code hat und wie hier im Forum ausgeben?

Zeile 1
zeile 2
usw.


Mfg. BNS

netcup.de Warum gibt es hier Werbung?
User-2 am 18.11.06 15:25

$zeilen = array('Dies ist Zeile 1','Dies ist Zeile 2','Wer könnte auf eine 3 Zeile verzichten');

for($i = 0; $i < count($zeilen); $i++) {
echo "Zeile ".($i+1).": ";
echo $zeilen[$i];
}


oder hab ich dich falschc verstanden?

User-1 am 18.11.06 15:33

also ich habe das ja als ganzes vorliegen und nicht als array und will es nun in einen Array teilen und zwar nach jedem Zeilen umbruch.

User-3 am 18.11.06 15:39

mhhh... :D
<?
$text = 'Dein Text
der
ganz
viele
Zeilen
hat!';

$gerayd_xD = explode("\n", $text);
for($i=0;$i<=count($gerayd_xD); $i++){
echo ($i+1).': '.$gerayd_xD[$i];
}
?>


oder so xD

User-1 am 18.11.06 15:56

Gut hab nun sowas:
Nur leider zeigt er nichts an.


Aufruf: <? echo synax("<? lol; ?>"); ?>

Function: function synax($text) {

$array = explode("\n", $text);
$count = count($array);

echo '<table style="width: 100%;" cellpadding="4" cellspacing="1">';
echo '<tbody>';
echo ' <tr>';
echo ' <td colspan="2"><span><b>php:</b></span></td>';
echo ' </tr>';
echo ' <tr>';
echo ' <td align="right" nowrap="nowrap"><pre>';

for ($i=1;$i<=$count;$i++) {

echo "".$i.":<br />";

}

echo '</pre></td>';
echo ' <td style="width: 100%;" align="left" nowrap="nowrap" valign="top"><pre>';

for ($i=1;$i<=$count;$i++) {

echo highlight_string($array[$i]);
echo "<br />";

}

echo '</pre></td>';
echo ' </tr>';
echo '</tbody>';
echo '</table>';
}

User-4 am 18.11.06 16:02

function synax($text) {

$array = explode("\n", $text);
$count = count($array);

$string = '<table style="width: 100%;" cellpadding="4" cellspacing="1">';
$string .= '<tbody>';
$string .= ' <tr>';
$string .= ' <td colspan="2"><span><b>php:</b></span></td>';
$string .= ' </tr>';
$string .= ' <tr>';
$string .= ' <td align="right" nowrap="nowrap"><pre>';

for ($i=1;$i<=$count;$i++) {

$string .= $i.':<br />';

}

$string .= '</pre></td>';
$string .= ' <td style="width: 100%;" align="left" nowrap="nowrap" valign="top"><pre>';

for ($i=1;$i<=$count;$i++) {

$string .= highlight_string($array[$i]);
$string .= '<br />';

}

$string .= '</pre></td>';
$string .= ' </tr>';
$string .= '</tbody>';
$string .= '</table>';

return $string;
}

User-1 am 18.11.06 16:07

macht keinen unterschied

User-3 am 18.11.06 16:08

beachte das zweite argument von highlight_string() ;)

User-1 am 18.11.06 16:11

was meinst du mit das zweite Argument?

User-3 am 18.11.06 16:38

ja guck doch mal im manual nach :)

User-1 am 18.11.06 16:43

Hab ich ja, aber ich sehe da kein zweites Argument:

Quote
highlight_string

(PHP 4, PHP 5)
highlight_string -- Hervorhebung der Syntax eines Strings
Beschreibung:
void highlight_string ( string str )

Die Funktion highlight_string() gibt den String str mit hervorgehobener Syntax (Syntax highlighting) aus. Dabei werden die Farben des in PHP eingebauten Syntax-Highlighter benutzt.

User-5 am 18.11.06 16:52

:D lol guck mal ins Englisch rein... da hat der Übersetzer wohl gepennt

Quote

highlight_string

(PHP 4, PHP 5)
highlight_string -- Syntax highlighting of a string
Description
mixed highlight_string ( string str [, bool return] )

The highlight_string() function outputs a syntax highlighted version of str using the colors defined in the built-in syntax highlighter for PHP.

If the second parameter return is set to TRUE then highlight_string() will return the highlighted code as a string instead of printing it out. If the second parameter is not set to TRUE then highlight_string() will return TRUE on success, FALSE on failure.

User-1 am 18.11.06 16:55

ok, aber egal ob ich im Code ein TRUE oder ein FALSE hintersetze bleibt der code imer noch "unsichtbar".

User-3 am 18.11.06 18:11

mhh komisch bei mir gehts... du benutzt auch GANZ SICHER echo oder print davor?
also nich einfach nur...
<?
syntax('<?
echo \'lol\';
?>');
?>

User-1 am 18.11.06 18:18

ich habs so:

<? echo synax("<? lol; ?>"); ?>

User-3 am 18.11.06 18:34

dir is aba kla das dann nur eine zeile ausgegeben wird..?

ahh fehler gefunden: du darfst net mit 1 anfangen zu zählen...mach das wie ich das da hatte mit 0 anfangen und dann bei der ausgabe der zeilennummer temporär die nummer ausgeben (echo ($i+1)..)

User-6 am 18.11.06 18:46

Hab das für mein CMS auch vor einiger Zeit mit highlighting gelöst.

Schon einer ne Methode gefunden, wie man hinterher den PHP Code wieder als solchen auslesen kann? :D

User-3 am 18.11.06 19:06

2x speichern inner db..? ;)

User-6 am 18.11.06 19:16

Das wurde mir damals auch empfohlen. Aber dem Trend entziehe ich mich. Ich hab mir was zusammengebastelt aus strip_tags(), etc und einigen RegEx.

Allerdings muss ich dazu immer HTML-Kommentare zur Markierung der Codeblöcke in die Seite einfügen. :D

User-7 am 18.11.06 19:32

bedenke nur, dass jeder befehl cpu zeit ist. und das ausrechnen einer webseite extrem schnell von statten gehen muss

User-2 am 18.11.06 21:11

ausserdem heisst es syntax und niht synax *g*

nur mal so am rande


und das mit dem 2x in der DB speichern ist durchaus sinnvoll...sonst muss du es parsen udn anders nur auslesen...was sehr wahrscheinlich schneller geht

User-6 am 18.11.06 21:12

Wie oft editierst du denn deine Texte? :D

User-2 am 18.11.06 21:29

aber editieren ist 1x...oder nicht jeden TAg....aber das parsen ist mehrmals am Tag...mindestens öfters als aufrufen und parsen :P

User-6 am 19.11.06 12:58

Also ich mach mir da wenig sorgen. Die Ausgabe ist ja fertig umgewandelt. Ich wandel es ja bloß aufwendig zurück, wenn der Text editiert werden muss.

Oder reden wir gerade aneinander vorbei? :D

User-8 am 21.12.06 12:18

sorry, dass ich das thema nochmal hochhole, aber ich habe mal ne frage zum gleichen thema:

wie mache ich die zeilennummern, wenn ich
<?php
highlight_file("file.php");
?>


verwende?

User-3 am 21.12.06 12:41

zwei tabellenspalten...? wenn du die nr direkt vor jede zeile schreibst, gibts probleme beim kopieren (..)

User-2 am 21.12.06 15:44

du liest den Text ein und parsed ihn....du kannst die datei entweder über file_gets_content kriegen oder halt zeile für zeile mit file einlesen :D

User-3 am 21.12.06 17:37

$file = file(__FILE__);
$lines = $count = '';
foreach($file as $i => $line){
$lines .= highlight_str($line, true).'<br />';
$count .= $i.'<br />';
}
echo '<table border="0" cellspacing="0" cellpadding="2"><tr><td>'.$count.'</td><td>'.$lines.'</td></tr></table>';


oder iwie so...

User-2 am 21.12.06 18:13

<?php
$count = ($i+1)."<br />";
?>


nur so als anmerkung....weil von der ersten Zeile $i = 0 ist :D

User-1 am 21.12.06 18:54

Bei mir kommt der Fehler:

Quote

Fatal error: Call to undefined function highlight_str() in K:\Programme\xampp\htdocs\www\test\tab.php on line 5

User-3 am 21.12.06 22:32

ohh heißt wohl highlight_string...danke moonie ^^

User-1 am 22.12.06 11:47

bei mir wird nur eine Zeilen nummer angezeigt! bei Ca. 260 Zeilen wird bei mir nur die 130 als zeilennummer angezeigt und das einmal!

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt