Frage von Christoph34212, 82

PHP Variable mit "?

Hallo,
Ich schreibe grade eine Automatisierte Website mit einer PHP config aus der die Daten abgefragt werden. Mein Problem ist das wenn ich nun z.b. Ein Dropdown-Menü aus der Config abfragen will es nicht funktioniert da in der Seitenbeschreibung des Menüs Anführungsstriche sind z.b. beim href Tag und der PHP Interpreter denkt das da die Variable zu Ende sei da man die PHP Variablen mit Buchstaben ja so schreibt $variable ="Wert"; und er kann das Semikolon nicht finden und findet Dort einen Fehler. Ich habe schon überlegt ob man es vielleicht mit einer Datenbank macht das man das " in die Datenbank packt und jedes Mal wenn es vorkommt eine Abfrage macht was aber sehr Leistungsfressend wäre.

Ich freue mich über jede Konstruktiv wertvolle Antwort!

Danke und LG von Chris(am Handy)

Antwort
von jnnkhlstn, 54

kannst mal ein beispielcode posten wie du es jetzt hast? :)

Kommentar von Christoph34212 ,

Z.b.

die index.php

<?php require_once"config.php"; ?><html><head><?php echo $website_title; ?></head><body>Hallo Welt</body></html>

der komplette head soll nun aus der config.php abgefragt werden nun ist aber z.b. der Stylesheet import der typisch so abläuft 

<link rel="stylesheet" type="text/css" href="beispiel.de/css/main.css">

nun zur config.php der einfachheit halber importiere ich nur den Stylesheet da es ja nur um die verbildlichung geht

<?php $head ="<link rel="stylesheet" type="text/css" href="beispiel.de/css/main.css">";

Nun ist es aber so das der PHP interpreter des Webservers das erste semikolon bei rel="... usw als "ende" der variable erkennt

Kommentar von fluffiknuffi2 ,

Dann schreibe \" statt ".

Kommentar von Malemeister ,

Auch hier, völliger Quatsch!

Kommentar von Malemeister ,
<?php $head = '<link rel="stylesheet" type="text/css" href="beispiel.de/css/main.css">';
Kommentar von Christoph34212 ,

Dickes Danke an Malermeister!

Antwort
von klugshicer, 22

Deine Seite hat eine miese Struktur....

Zunächst würde ich mit einem normalen HTML-Gerüst anfangen.

Dann lagerst Du den HEAD-Teil und den Body meinetwegen in separate PHP-Seiten aus und inkludierst sie wieder. ( wenn du das clever anstellst, kannst Du deine Seite Template-fähig machen)

So was in die  config.php auszulagern ist unpraktisch....

<?php $head ="<link rel="stylesheet" type="text/css" href="beispiel.de/css/main.css">";

Lass das in der index.php oder lagere es in die body.php aus

<link rel="stylesheet" type="text/css" href="<?PHP echo $meine_domain; ?>/css/main.css">

Jetzt brauchst Du nur noch die Variable $meine_domain aus deiner config.PHP lesen, bzw. nach dem du vorher die config.PHP inkludiert hast steht die Variable sofort zur Verfügung.

Du solltest dich auch ein wenig mit Quoten befassen ;-)

<?PHP echo "<a href=".' " '."http://google.de". ' " '. ">"; ?>
Antwort
von fluffiknuffi2, 42

der PHP Interpreter denkt das da die Variable zu Ende sei

Das klingt eher danach als wenn du die Sache falsch angehst. Der PHP-Interpreter sollte diese Daten gar nicht erst interpretieren.


EDIT:

Ok hat sich erledigt du meinst etwas anderes als ich dachte.

Antwort
von ceevee, 39

die PHP Variablen mit Buchstaben

Das sind übrigens sogenannte Strings. ;)

Du kannst als zweites Trennzeichen noch ' verwenden, also ungefähr

$variable = "'wert;'";

schreiben oder die doppelten Anführungsstriche mit einem Backslash maskieren, so dass sie als Teil des Strings erkannt werden. Also

$variable = "\"wert;\""
Kommentar von Malemeister ,

Warum escapen??? Völliger Quatsch!

Kommentar von ceevee ,

Escapen muss man, wenn man mal mehr als zwei verschiedene Sonderzeichen zur Verfügung hat und die verwursten will. Die beiden Codebeispiele aus meiner Antwort tun beide das gleiche, ob man escaped oder nicht, ist Geschmackssache. Der Fragesteller kennt nun beide Varianten. Meiner Meinung nach ist escapen der allgemeinere Ansatz, den der Fragesteller auch sofort anwenden kann, wenn er z.B. einen Backslash maskieren will.

Kommentar von Malemeister ,

Dir ist aber schon bewusst das man nicht jedesmal escapen sollte, oder? Wenn nicht solltest du dich darüber nochmal gründlich informieren.

Was den Fragensteller angeht gibt es folgende 2 Möglichkeiten:

$var = "value";

$var = 'value';

Damit bin ich bis jetzt immer hingekommen!

Keine passende Antwort gefunden?

Fragen Sie die Community