You are not logged in.

  • Login

1

Thursday, February 24th 2005, 3:24pm

php Frage

Hallo,
kurz gesagt: Ich suche eine Funktion wie string_highlight aber ohne das highlight. Also ich will php code ausgeben ohne ihn auszuführen und das in einem textarea.

Code:
In der Datei, wo die Variablen liegen:

PHP Source code

1
2
3
4
<?
$suchen[0]="[NAVI]";
$ersetzen[0]="create_navi(file("$GLOBALS[config_navifile]"));";
...

Und hier werden die Sachen ausgegeben:

PHP Source code

1
2
3
4
5
6
7
8
9
//ausgeben
echo("<form action='$PHP_SELF' method='post'><table width='90%'  border='0'>\n");
for($i=0;$i<count($suchen);$i++) {
  echo("<tr><td>$suchen[$i]:<input name='suchen_$i' type='hidden' value='$suchen[$i]'></td>
  <td><textarea name='ersetzen_$i' cols='90' rows='2'>");
  echo("$ersetzen[$i]");
  echo("</textarea></td>
  </tr>\n");
}

wobei das $ersetzen[$i] natürlich der code ist...kann jm helfen? :\


XaoMat

Was ich schon probiert habe:
quotemeta geht nicht, da es die Variablen trotzdem versucht umzuwandeln
highlight_string geht in der Textbox nicht, da es mir das zeug vollhaut mit html :\
str_replace von z.B. chr(36) zu "chr(36)" geht auch net...

Posts: 4,115

Location: Hildesheim

Occupation: GER

  • Send private message

2

Thursday, February 24th 2005, 5:52pm

suchst du vielleicht htmlspecialchars?

Quoted

htmlspecialchars -- Wandelt Sonderzeichen in HTML-Codes um

Posts: 3,935

Location: Berlin

Occupation: /dev/random

  • Send private message

3

Thursday, February 24th 2005, 6:49pm

also wenn du den php-code von einer ganzen datei ausgegeben haben willst ,dann tut's die funktion show_source(filename); ansonsten musst du dir halt selber eine funktion/klasse schreiben, die <, >, " und ' in ascii-code umwandet. Dann funktionert das auch. :).

edit: mit der funktion, die Isch angegeben hat wird letztes funktionieren.

This post has been edited 1 times, last edit by "Tsu_G_" (Feb 24th 2005, 6:49pm)


4

Thursday, February 24th 2005, 8:28pm

thx euch 2, aber habe auch htmlspecialcharts schon probiert - geht auch nicht, die variablen sind stärker (d.h. statt $GLOBAL[blabla] kommt halt nix... :\)

das mit der funktion schreiben habe ich ja versuch (siehe oben) aber z.B. wenn ich $ zu chr(36) ersetze funkt das genauso wenig, da er ja auch bei str_replace von der variable schon den wert nimmt :\

Ach und ganze datei ists ja auch nicht...

Weitere vorschläge?

Xao

PS: Habe noch ein anderes Prob mit eregi_replace, will z.B. dass er alles was zwischen (php) und (/php) steht (eckige klammern) in ne eval funktion reinhaut...wie kann ich das machen denn wenn ich z.B. eregi("(\(php\))(.*)(\(\/php\)),$string,$reg) mache, findet er immer nur "das äußere", d.h. bei
blabla (php)blub(/php) bli (php)blublub(/php), würde er blub(/php) bli (php)blublub ausgeben, liegt ja auch zwischen den beiden - ist aber falsch :\

5

Friday, February 25th 2005, 12:23am

lol

also wenn ich das richtig verstanden habe, dann musst du statt " (doppelte Anführungszeichen) einfach ' nehmen (einfache Anführungszeichen.


Variablen werden in doppelten Anführungszeichen geparst, in einfachen nicht.


Unter umständen musst du dann innerhalb des strings die sonstigen einfachen Anführungszeichen maskieren mit dem Backslash \' (hoffentlich veschluckt das forum das nicht)


Hoffe das war so gemeint, ansonsten geh im ICQ Online

€dit: und merk dir mal eins: eval is evil!

1. FÜhrt Eval code aus und ist hier wohl die falsche funktion und 2. ist eval sehr langsam und zeichen von schlechtem programmierstil.

€dit2: in dienem quelltext einfach echo("$ersetzen[$i]"); mit echo($ersetzen[$i]); ersetzen

This post has been edited 2 times, last edit by "MaxPower" (Feb 25th 2005, 12:29am)


Posts: 3,935

Location: Berlin

Occupation: /dev/random

  • Send private message

6

Friday, February 25th 2005, 12:35am

Quoted

Original von XaoMat
z.B. wenn ich $ zu chr(36) ersetze funkt das genauso wenig, da er ja auch bei str_replace von der variable schon den wert nimmt :\

ich versteh dich nicht. Wenn du $ versuchst mit seinen ASCII-code zu ersetzen ist's klar, warum dein php-code nicht funktioniert.

edit: print/echo "blah"; ist kürzer/übersichtlicher/besser.

This post has been edited 1 times, last edit by "Tsu_G_" (Feb 25th 2005, 12:37am)


7

Sunday, February 27th 2005, 5:23pm

Quoted

Original von MaxPower
...
also wenn ich das richtig verstanden habe, dann musst du statt " (doppelte Anführungszeichen) einfach ' nehmen (einfache Anführungszeichen.


Variablen werden in doppelten Anführungszeichen geparst, in einfachen nicht.

...

juhuuu thx :) :)
Nur jetzt ist halt das Prob, ich habe es nun z.B. so

PHP Source code

1
2
 $suchen[0]="[NAVI]";
$ersetzen[0]='create_navi(file(\'$GLOBALS[config_navifile]\'));';

und das wird auch beim einen mal so angezeigt, wie es angezeigt werden soll...aber wie kann ich nun machen, dass die variablen wieder geparst werden?

Bin im MSN online :)

8

Sunday, February 27th 2005, 6:26pm

Xaomat, du solltest dir mal gründlich das Kapitel über strings durchlesen...



$ausgabe = 'Wird nicht geparst $var '.$variable."wird geparst $var";

'Wird nicht geparst $var' bleibt unberührt, es kommt also genau das raus, was da steht...

$variable steht weder in ' noch in " und wird daher durch den inhalt von $variable ersetzt

"wird geparst $var" - hier wird $var durch den inhalt von $var ersetzt


der . verbindet mehrere belibige strings zu einem

DU kannst alle 3 methoden kombinieren wie du willst, am saubersten wäre immer ' zu verwenden und variablen mit dem Punkt-operator einzuhängen

$ausgabe = 'Schau mal, die Variabale hat den Inhalt : '.$variable.'. Schön, oder ?';



Noch ein paar besondere Bemerkungen von mir:

Möchtest du innerhalb von zwei einfachen Anführungszeichen das einface anführungszeichen selbst ausgeben, so musst du es maksieren mit \

also $ausgabe = 'Schau mal, ein einfaches anführungszeichen : \' ';

ausgabe wäre dann :

Quoted

Schau mal, ein enfaches anführungszeichen: '


dasselbe für doppelte anführszeichen innherlab eines trings das mit einem doppelten anführunszeichen begonnen wurde.



Was ist nun der Unterschied zwischen ' und " ?

Nun, als erstes natürlich, dass Variablen innerhlab von " durch deren inhalt ersetzt werden und bei ' eben nicht, und bei " kann man ausserdem steuerzeichen verwenden.

"zeile 1 \n eile 2" - hier wird \n ersetzt mit einer neuen zeile, ausgabe wäre:

Quoted

zeile1
zeile2

-=)GWC(RaMsEs

Unregistered

9

Sunday, February 27th 2005, 6:51pm

oh wie liebe ich java und jsp...

10

Sunday, February 27th 2005, 7:46pm

was hat das damit zu tun ?

php is in sachen strings einfach genial...