Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: MastersForum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

24.02.2005, 15:24

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

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

Und hier werden die Sachen ausgegeben:

PHP-Quelltext

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

OoK_Isch

Erleuchteter

Beiträge: 4 115

Wohnort: Hildesheim

Beruf: GER

  • Nachricht senden

2

24.02.2005, 17:52

suchst du vielleicht htmlspecialchars?

Zitat

htmlspecialchars -- Wandelt Sonderzeichen in HTML-Codes um

Tsu_G_

Erleuchteter

Beiträge: 3 935

Wohnort: Berlin

Beruf: /dev/random

  • Nachricht senden

3

24.02.2005, 18:49

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.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tsu_G_« (24.02.2005, 18:49)


4

24.02.2005, 20:28

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

25.02.2005, 00:23

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

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »MaxPower« (25.02.2005, 00:29)


Tsu_G_

Erleuchteter

Beiträge: 3 935

Wohnort: Berlin

Beruf: /dev/random

  • Nachricht senden

6

25.02.2005, 00:35

Zitat

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.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tsu_G_« (25.02.2005, 00:37)


7

27.02.2005, 17:23

Zitat

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

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

27.02.2005, 18:26

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 :

Zitat

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:

Zitat

zeile1
zeile2

-=)GWC(RaMsEs

Erleuchteter

Beiträge: 5 098

Wohnort: Bamberg

Beruf: IT-ler

  • Nachricht senden

9

27.02.2005, 18:51

oh wie liebe ich java und jsp...

10

27.02.2005, 19:46

was hat das damit zu tun ?

php is in sachen strings einfach genial...