Willkommen in der Webstatt Zum Webstatt Blog und Stories
BNightSpeeder 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?
nuit nuit 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?

BNightSpeeder 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.

Franky Franky 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

BNightSpeeder 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>';
}

okraina 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;
}

BNightSpeeder am 18.11.06 16:07

macht keinen unterschied

Franky Franky am 18.11.06 16:08

beachte das zweite argument von highlight_string() ;)

BNightSpeeder am 18.11.06 16:11

was meinst du mit das zweite Argument?

Franky Franky am 18.11.06 16:38

ja guck doch mal im manual nach :)

BNightSpeeder 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.

der_nic der_nic 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.

BNightSpeeder 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".

Franky Franky 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\';
?>');
?>

BNightSpeeder am 18.11.06 18:18

ich habs so:

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

Franky Franky 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)..)

Dustwolf Dustwolf 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

Franky Franky am 18.11.06 19:06

2x speichern inner db..? ;)

Dustwolf Dustwolf 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

Snake 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

nuit nuit 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

Dustwolf Dustwolf am 18.11.06 21:12

Wie oft editierst du denn deine Texte? :D

nuit nuit 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

Dustwolf Dustwolf 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

fish fish 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?

Franky Franky am 21.12.06 12:41

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

nuit nuit 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

Franky Franky 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...

nuit nuit am 21.12.06 18:13

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


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

BNightSpeeder 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

Franky Franky am 21.12.06 22:32

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

BNightSpeeder 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