Wie kombiniere ich zwei Strings in PHP?

140

Ich weiß eigentlich nicht, wie ich beschreiben soll, was ich wollte, aber ich zeige Ihnen:

Beispielsweise:

$data1 = "the color is";
$data2 = "red";

Was soll ich tun (oder verarbeiten), damit $ result die Kombination von $data1und ist $data2?

Erwünschtes Ergebnis:

$result = "the color is red";
Glennanyway
quelle
13
Dies wird als "Zeichenfolgenverkettung" bezeichnet und sollte nicht fremder sein als +für Zahlen. Bitte beginnen Sie mit einem Buch / Tutorial und machen Sie sich mit den grundlegenden Operatoren in der Sprache vertraut.
1
Es gibt viele Möglichkeiten, dies zu tun. Wenn Sie die Antwort sehen, können Sie sie überprüfen. aber benutze die einfachste. zum Beispiel $ result = "$ data1 $ data2"; das ist es. oder $ result = $ data1. $ data2;
Jewelhuq
1
@Machavity können Sie die Schutzstufe auf magische Weise erhöhen, damit sich auf dieser Seite nicht immer wieder redundante Beiträge häufen?
Mickmackusa

Antworten:

206
$result = $data1 . $data2;

Dies wird als Zeichenfolgenverkettung bezeichnet. In Ihrem Beispiel fehlt jedoch ein Leerzeichen. Dafür benötigen Sie Folgendes:

$result = $data1 . ' ' . $data2;
Logan Serman
quelle
85

Es gibt verschiedene Möglichkeiten, zwei Zeichenfolgen miteinander zu verknüpfen.

Verwenden Sie den Verkettungsoperator .(und .=)

In PHP .ist der Verkettungsoperator, der die Verkettung seiner rechten und linken Argumente zurückgibt

$data1 = "the color is";
$data2 = "red";
$result = $data1 . ' ' . $data2;

Wenn Sie eine Zeichenfolge an eine andere Zeichenfolge anhängen möchten, verwenden Sie den .=Operator:

$data1 = "the color is ";
$data1 .= "red"

Komplexe (geschweifte) Syntax- / Anführungszeichen

In PHP werden in doppelten Anführungszeichen enthaltene Variablen interpoliert (dh ihre Werte werden für die Variable "ausgetauscht"). Dies bedeutet, dass Sie die Variablen anstelle der Zeichenfolgen platzieren und einfach ein Leerzeichen dazwischen setzen können. Die geschweiften Klammern machen deutlich, wo sich die Variablen befinden.

$result = "{$data1} {$data2}";

Hinweis: Dies funktioniert in Ihrem Fall auch ohne die geschweiften Klammern:

$result = "$data1 $data2";

Sie können Array-Werte auch innerhalb einer Zeichenfolge verketten:

$arr1 = ['val' => 'This is a'];
$arr2 = ['val' => 'test'];
$variable = "{$arr1['val']} {$arr2['val']}";

Verwenden Sie sprintf()oderprintf()

sprintf()ermöglicht es uns, Zeichenfolgen mit leistungsstarken Formatierungsoptionen zu formatieren. Es ist übertrieben für solch eine einfache Verkettung, aber es ist praktisch, wenn Sie eine komplexe Zeichenfolge haben und / oder auch eine Formatierung der Daten vornehmen möchten.

$result = sprintf("%s %s", $data1, $data2);

printf() macht das gleiche, zeigt aber sofort die Ausgabe an.

printf("%s %s", $data1, $data2);
// same as
$result = sprintf("%s %s", $data1, $data2);
echo $result;

Heredoc

Heredocs können auch verwendet werden, um Variablen zu einer Zeichenfolge zu kombinieren.

$result= <<<EOT
$data1 $data2
EOT;

Verwenden Sie ein ,mitecho()

Dies funktioniert nur, wenn Inhalte wiedergegeben und keiner Variablen zugewiesen werden. Sie können jedoch ein Komma verwenden, um eine Liste von Ausdrücken zu trennen, die von PHP ausgegeben werden sollen, und eine Zeichenfolge mit einem Leerzeichen als einen dieser Ausdrücke verwenden:

echo $data1, ' ', $data2;
John Conde
quelle
21

Niemand hat dies erwähnt, aber es gibt andere Möglichkeiten. Ich benutze es für große SQL-Abfragen. Sie können. = Operator verwenden :)

$string = "the color is ";
$string .= "red";

echo $string; // gives: the color is red
Codelame
quelle
"Ich benutze es für große SQL-Abfragen." - Beachten Sie, dass es ein typischer Weg ist, um en.wikipedia.org/wiki/SQL_injection zu
Aktivität reduzieren
Wie genau die Verkettung von Zeichenfolgen auf diese oder andere Weise führt zu einer SQL-Injektion in meine parametrisierte Abfrage?
Codelame
Das manuelle Erstellen ganzer SQL-Abfragen (zumindest vorgeschlagen von "für große SQL-Abfragen") ist nicht in Ordnung. Wenn Sie nur Parameter vorbereiten, sollten nicht ganze Abfragen vor diesem spezifischen Sicherheitsrisiko geschützt sein.
Reduzierung der Aktivität
19

Verketten Sie sie mit dem .Operator:

$result = $data1 . " " . $data2;

Oder verwenden Sie die Zeichenfolgeninterpolation:

$result = "$data1 $data2";
Jeremy Ruten
quelle
11
$result = implode(' ', array($data1, $data2));

ist allgemeiner.

Warum 50 Punkte zu kommentieren ...
quelle
1
Dies ist sehr nützlich in einem Fall, in dem Sie eine begrenzte Liste erstellen möchten, da überprüft wird, ob die Variablen Werte haben, die $email_to = implode(', ', array($addr1, $addr2, addr3));nicht benötigt werden if($addr != '')usw.
Aba
4
Wählen Sie keine Array-Funktionen, es sei denn, Sie müssen. Weil das Array immer langsamer funktioniert als die Operatoren. Zusätzlich; Sie benutzen mehr Widder.
MERT DOĞAN
9

Ein anderes verfügbares Formular ist folgendes:

<?php
$data1 = "the color is";
$data2 = "red";
$result = "{$data1} {$data2}";
Tim G.
quelle
6

Sie können die folgende Codezeile ausprobieren

$result = $data1." ".$data2;
user710502
quelle
Ich würde lieber einfache Anführungszeichen anstelle von doppelten Anführungszeichen verwenden. Link
Jack
5

Ein Punkt wird verwendet, um Zeichenfolgen zu verketten. Einfaches Beispiel, um zwei Zeichenfolgenvariablen in eine einzige Variable umzuwandeln:

$full = $part1 . $part2;

In Ihrem Beispiel möchten Sie Folgendes tun:

$result = $data1 . ' ' . $data2;

Sie werden feststellen, dass ich zwischen den beiden Variablen eine Zeichenfolge mit einem Leerzeichen eingefügt habe. Dies liegt daran, dass Ihr Original $data1nicht mit einem Leerzeichen endete. Wenn Sie sie ohne sie kombiniert hätten, würde Ihre $resultVariable am Ende so aussehen the color isred.

Aken Roberts
quelle
5

Sie können dies mit PHP tun:

$txt1 = "the color is";
$txt2 = " red!";
echo $txt1.$txt2;

Dadurch werden zwei Zeichenfolgen kombiniert und der Putput lautet: "Die Farbe ist rot!".

sunil
quelle
1
Ihre fabrizierten Eingabewerte stellen nicht die Eingabezeichenfolge des OP dar und Sie geben Lösungen wieder, die vor JAHREN angegeben wurden. Dies ist keine Javascript-Frage, so dass Ratschläge irrelevant sind. Dieser Beitrag fügt der Seite keinen Wert hinzu.
Mickmackusa
@ Mickmackusa, ok, ich habe den Text aktualisiert, Sie haben Recht, aber ich habe hier eine Antwort gegeben, da dies eine sehr grundlegende Frage ist, damit der Benutzer den Unterschied lernen kann
Sunil
1
Ihr Update verwendet NICHT den Text des OP. Stellen Sie keine Javascript-Lösungen für PHP-Fragen bereit. Diese Antwort ist schlecht formatiert und fügt der Seite keinen Wert hinzu.
Mickmackusa
4
$s = "my name is ";

$s .= "keyur";

echo $s; 

Ergebnis:

my name is keyur
Keyur Sojitra
quelle
9
Willkommen bei StackOverflow. Es ist schön, wenn Sie Fragen beantworten. Wenn Sie dies jedoch tun, formatieren Sie es bitte ordnungsgemäß. Weiter wurde Ihre Antwort bereits gegeben. Wie bringt es einen Mehrwert für diesen vier Jahre alten Beitrag?
T3 H40
6
Dies ist nur eine Wiederholung der vorhandenen Antworten.
Pang
4
$result = $data1 . $data2;

Versuche dies

Farhan
quelle
5
Dies ist keine richtige Antwort. es ergibt sich "die Farbe ist rot". Außerdem wird Ihre Antwort von der Antwort einer Person vor Jahren dupliziert. Down stimmte ab.
Jason Liu
3

Dies sollte für Sie funktionieren:

$result = $data1." ".$data2;

Referenz: PHP-String-Variablen

Robert
quelle
0

Ich bin mir nicht ganz sicher, was Ihre Anforderungen sind, aber im Grunde könnten Sie die beiden Variablen getrennt definieren und sie anschließend miteinander kombinieren.

$data1="The colour is ";
$data2="red";

$result=$data1.$data2;

Auf diese Weise können Sie sogar $ data2 als globale Ebene deklarieren, um den Wert während der Ausführung zu ändern. Beispielsweise kann die Antwort "rot" über ein Kontrollkästchen abgerufen werden.

Yoosuf
quelle
0

zwei Strings in PHP miteinander kombinieren?

$result = $data1 . ' ' . $data2;
Rafi Ullah Patel
quelle
2
Diese Antwort bietet nichts, was die anderen Antworten noch nicht geliefert haben, und bietet keine Erklärung, warum oder wie dies funktioniert.
John Conde
-1

1. Verketten Sie die Zeichenfolge (Leerzeichen zwischen den einzelnen Zeichenfolgen)

Code-Auszug :

<?php
 $txt1 = "Sachin";
 $txt2 = "Tendulkar";

 $result = $txt1.$txt2 ;
 echo  $result. "\n";
 ?>  

Ausgabe: SachinTendulkar

2. Verketten Sie die Zeichenfolge, in der Speicherplatz vorhanden ist

Code-Auszug :

<?php
 $txt1 = "Sachin";
 $txt2 = "Tendulkar";

 $result = $txt1." ".$txt2; 
 echo  $result. "\n";
?>  

Ausgabe: Sachin Tendulkar

  1. Verketten Sie die Zeichenfolge mit der Funktion printf.

Code-Auszug :

  <?php
 $data1 = "Sachin";
 $data2 = "Tendulkar";
 printf("%s%s\n",$data1, $data2);
 printf("%s %s\n",$data1, $data2); 
?>

Ausgabe:
SachinTendulkar
Sachin Tendulkar

Hautausschläge
quelle
4
Was bietet diese Antwort, die von den anderen Antworten noch nicht bereitgestellt wurde?
John Conde
@rashedcs Funktioniert super für mich !! 🏏
IPSDSILVA
-1

Ich glaube, der performanteste Weg ist:

$data1 = "the color is";
$data2 = "red";
$result = $data1 . ' ' . $data2;

Wenn Sie die Lokalisierung implementieren möchten, können Sie Folgendes tun:

$translationText = "the color is %s";
$translationRed  = "red";
$result = sprintf($translationText, $translationRed);

Es ist etwas langsamer, setzt aber keine Grammatikregeln voraus.

Pedro Amaral Couto
quelle
-3

Versuchen Sie dies, wir können Zeichenfolge in PHP mit Punkt (.) Symbol anhängen

$data1 = "the color is";
$data2 = "red";

echo $data1.$data2; //the color isred
echo $data1." ".$data2; // the color is red (we have appended space)
Kankatala Krishna
quelle
1
Diese Antwort bietet nichts, was die anderen Antworten noch nicht geliefert haben.
John Conde