Sonderzeichen in Variable - Geht nicht?

Alice

Erfahrenes Mitglied
Hallo.

PHP:
$foo = 'ALICE';

$var = '(</'.$foo.'\>)';

echo $var;

// Ausgabe: ()

Ich hätte als Ausgabe gerne (</ALICE\>)

Ist das nicht Möglich?
 
Hey,

escape die Zeichen.
Ansonstens interpretiert er dies nicht so wie du möchtest.
 
Daran habe ich schon gedacht.

Nur ist die Frage wie das Skript dann damit im weiteren Verlauf umgeht?

Denn ich möchte die Variable "$var" danach mit einem Array "vergleichen".

PHP:
$foo = 'ALICE';

$var = '(</'.$foo.'\>)';
$var = htmlspecialchars($var);

$var_array = array(
   '(' => array(20,1299),
   '<' => array(80,1299),
   '/' => array(100,1299),
   '\' => array(120,1299),
   '>' => array(220,1299),
   ')' => array(300,1299),
);

...
Sonderzeichen in einer Schleife zuordnen.
...

Edit:

Mit "htmlspecialchars" funktioniert es. Also zumindest die Ausgabe.
 
Wie meinst du das?

Im Grunde möchte ich die Variable nicht ausgeben. Das mache ich nur um zu gucken ob alles so funktioniert wie ich das gerne möchte.

Sehe ich das falsch oder ist "$var_array" aus meinem 2. Beitrag ungültig?
 
Ja, es ist ungütlig, weil du mit dem Backslash - also dem Zeichen \ - eine Maskierung des darauffolgenden Single-Quotes - also dem Zeichen ' - vornimmst. Wenn du wirklich Backslash verwenden willst, musst du den Backslash maskieren, in dem du ihm einen weiteren Backslash spendierst:

PHP:
$var_array = array(
   '(' => array(20,1299),
   '<' => array(80,1299),
   '/' => array(100,1299),
   '\\' => array(120,1299),
   '>' => array(220,1299),
   ')' => array(300,1299),
);

Wenn du die Ausgabe nicht brauchst, warum dann der Terz? Im HTML-Code wirst du dein '</ALICE\>' finden ;-)
 
Ich mache das ganze aus folgendem Hintergrund.

Beim generieren einer Grafik habe ich Standard Grafiken die immer mit generiert werden (z.B. Hintergrund) und diese haben ja bestimmte Abmessungen. Damit die nachfolgenden Grafiken an die richtige Position eingefügt werden, musste ich immer mit getimagesize usw. arbeiten. Nur ist das ganze nicht so Memory und Laufzeit sparend und deswegen verändere ich die eingaben des User im Verlauf des Skripts um mir die Funktion getimagesize zu sparen.

PHP:
// Eingabe des Users
$var = 'ALICE';

// Variable verändern (neu)
$var2 =  '[(<'$var.'>)]';

// Array statt Getimagesize
$var_array = array(
   '[' => array($rahmen_left_w,$max_h),
   '(' => array($padding_left_w,$max_h),
   '<' => array($puffer_left_w,$max_h),
   '>' => array($puffer_right_w,$max_h),
   ')' => array($padding_right_w,$max_h),
   ']' => array($rahmen_right_w,$max_h),
);

So spare ich mir das getimagesize und kann die Grafiken trotzdem Pixelgenau positionieren.
 
Hi,

das Problem ist, dass dein Browser alles zwischen < und > als ein HTML-Element interpretiert. Und da es dieses spezielle von Dir nicht gibt, ist alles zwischen ( und ) einfach leer.
Du kannst also entweder mittels ´htmlspecialchars´ die < und > ersetzen lassen mit &gt; und &lt; oder aber Du schaust einfach im Browser in den Quelltext und dann wirst du dort Deine originale Ausgabe finden.
 
Kann mir jemand bei folgendem Pattern helfen?

PHP:
$pattern = '#(![A-Z0-9ÄÖÜ])|([A-Z0-9ÄÖÜ])|(\@)|(\[\(\<\>\)\])#';

// Probleme habe ich mit dem letzten Teil.
// (\[\(\<\>\)\])
// [
// (
// <
// >
// )
// ]
 
Zurück