Normaler Text und Variablen

Alice

Erfahrenes Mitglied
Hallo Leute.

Ich verstehe da etwas nicht.

Man kann ja "normalen Text" nicht mit Variablen in eine Zeile schreiben.

PHP:
$var1 = 'PHP';
$var2 = 'Variable: '.$var1.'<br />';

Wieso ist es denn hier umgekehrt?

PHP:
for($j=0, $x = strlen($var); $j < $x; ++$j) { 
    $size = getimagesize("./images/sig/'.$Arial_Font[$j].'/blue/'.$var[$j].'.png");
    $total_size +=$size[0]; 
}

Dieser Code funkzioniert nicht, da das Apostroph mit in den Pfad eingebaut wird.

Kann mir jemand erklären warum das so ist? Wie muss ich den den mit der Hand eingetragenden Pfad und die Variable abgrenzen?
 
" ist nicht '
Text der in ' steht wird nicht geparst. Text in " hingegen schon

PHP:
$var1 = 'PHP'
//Funktioniert:
$var2 = 'Variable: '.$var1.'<br />';  
//Funktioniert ebenfalls
$var2 = "Variable: ".$var1."<br />";  
//Funktioniert auch, da Text innerhalb von " geparst wird
$var2 = "Variable: $var1<br />";  
//Funktioniert nicht, da der Text in ' nicht geparst wird
$var2 = 'Variable.$var1<br />';

Lies dazu mal die PHPO-Doku über Strings: http://ch2.php.net/manual/de/language.types.string.php
 
Hallo noch einmal.

Was ich immer noch nicht verstehe ist, wann ich welche Methode verwenden soll?

Gemischter Code:
PHP:
if (!isset($_POST['text'])) {
   $_POST['text'] = ''; // ' oder " besser geeignet? Warum?
} 

if (preg_match('/!/', $var1)) { // ' oder " besser geeignet? Warum?
   ...
}

$ci = 0;
$var1 = preg_replace('/(!!+)/', '!', $var, -1, $ci); // ' oder " besser geeignet? Warum?

if ($var5 == 'BMW') { // ' oder " besser geeignet? Warum?
   ...
}

Das sind jetzt nur ein paar Beispiele.

Soviel ich bis jetzt verstanden habe, benutzt man das ' nur wenn was auch immer drin vorkommt aus Text und nicht aus PHP-Code besteht. Das " benutzt man wenn auch PHP-Code vorkommt. Richtig?

Wenn ja:
PHP:
if (preg_match('/!/', $var1)) { // ' oder " besser geeignet? Warum?
   ...
}

Wie wird dann hier mit dem '/!/' umgegangen? Das ist ja weder Text noch wirklich PHP-Code.

Ich möchte eigentlich nur die Zusammenhänge verstehen und meinem PHP-Skript eine gewisse Qualität verleihen.
 
Wie wird dann hier mit dem '/!/' umgegangen? Das ist ja weder Text noch wirklich PHP-Code.
Es geht doch gar nicht darum ob es ein Text oder PHP ist. Es ist ein String (Zeichenkette) fertig.

Entscheidend dafür, ob du ' oder " nimmst ist:
  1. hast Du Variablen in dem String die ausgewertet werden sollen = nutze "
  2. ist dem nicht so = nutze '

Gruß
 
Bei all deinen Beispielen des letzten Posts: '
Da sind keine Variablen drin - ergo muss nicht geparst werden -> nicht parsen = schnellerer Code.

'/!/' ist reiner Text:
/!/

Auch ein Pattern ist Text (String). Auch ein Dateiname ist String. Dem String ists egal was drin steht. Es bleibt String.
preg_match() erwartet 2 String-Variablen. preg_match() macht nachher mit den Stringvariablen irgendwas. Aber das soll uns nicht kümmern, denn preg_match() will String.
 
Ok...

Wäre es so richtig?

PHP:
$var1 = 'Yaslaw weiss viel' // Dies ist ein String
$var2 = "$var1 und davon ganz viel";
 
Wenn die erste Zeile noch mit einem ; geschlossen wird - dann ja.
Auch das Zweite ist ein String. Beinhaltet aber Variablen. Die folgenden Zielen machen alle dasselbe
PHP:
$var2 = "$var1 und davon ganz viel";
$var2 = $var1 . ' und davon ganz viel';
$var2 = "{$var1} und davon ganz viel";

Ich würde die 2te oder Dritte Schreibweise nehmen:
PHP:
$foo = 'foo';

echo "Hallo $foobar"; //gibt nur noch 'Hallo ' aus, da $foobar nicht exisitert

echo "Hallo {$foo}bar"; //funktioniert richtig: 'Hallo foobar'

Und wenn man sich die {} einfach angewöhnt (den falsch sind sie nie), muss man sich keine Gedanken mehr machen, damit solche Fehler nicht passieren
Zudem ists mMn besser lesbar, aber das ist Geschmacksachse
 
Man lernt nie aus!

Danke!

Wie sollte man denn so einen Code "formatieren"?

PHP:
$valid = 'HTML-Formular manipuliert -> '.implode( ' & ', $valid )."\r\n";
 
Der Code ist mMn schon richtig formatiert.

Wobei man vor und nach dem Verkettungsoperator (der Punkt) noch ein Leerzeichen machen sollte.

Gruß
 
...
Wobei man vor und nach dem Verkettungsoperator (der Punkt) noch ein Leerzeichen machen sollte.
...
Warum? Das bläht nur unnötig den QT auf und sorgt für eine längere Verarbeitungszeit. Ich persönlich entferne immer alle unnötigen Leerzeichen und Zeilenumbrüche.

PHP:
$valid='HTML-Formular manipuliert -> '.implode(' & ',$valid)."\r\n";

Erst wenn man in einem Team arbeitet sollte man sich auf eine einheitliche Codeformatierung einigen damit alle den Code optimal lesen und verstehen können.
 
Zurück