如何在PHP中将两个字符串组合在一起?


140

我实际上不知道该如何形容我想要的东西,但我将向您展示:

例如:

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

我应该怎么做(或过程),这样$结果的组合$data1$data2

所需结果:

$result = "the color is red";

13
这称为“字符串连接”,并且不应比+数字更陌生。请从一本书/教程开始,并熟悉该语言的基本运算符。

1
有很多方法可以做到这一点。如果您看到答案,则可以查看答案。但使用最简单的一种。例如$ result =“ $ data1 $ data2”; 而已。或$ result = $ data1。$ data2;
jewelhuq

1
@Machavity您可以神奇地提高保护级别,以免多余的帖子不再堆积在此页面上吗?
mickmackusa

Answers:



85

有两种方法可以将两个字符串连接在一起。

使用串联运算符.(和.=

在PHP中,.是串联运算符,它返回其左右参数的串联

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

如果要将字符串附加到另一个字符串,请使用.=运算符:

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

复杂(卷曲)语法/双引号字符串

在PHP中,对双引号字符串中包含的变量进行插值(即变量的值被“交换”出)。这意味着您可以将变量代替字符串,并在它们之间放置一个空格。花括号使变量在哪里清晰可见。

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

注意:在您的情况下,也无需括号即可使用:

$result = "$data1 $data2";

您还可以在字符串内串联数组值:

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

使用sprintf()printf()

sprintf()允许我们使用功能强大的格式化选项来格式化字符串。对于这种简单的串联而言,这是过高的,但是当您具有复杂的字符串和/或也想要对数据进行某种格式设置时,它就很方便。

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

printf() 做同样的事情,但会立即显示输出。

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

赫雷多克

Heredocs也可以用于将变量组合为字符串。

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

使用,echo()

这仅在回显内容且不分配给变量时有效。但是,您可以使用逗号分隔一系列表达式,以使PHP能够回显并使用带有一个空格的字符串作为这些表达式之一:

echo $data1, ' ', $data2;

21

没有人提到这一点,但还有其他可能性。我正在将其用于大型sql查询。您可以使用。=运算符:)

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

echo $string; // gives: the color is red

“我正在将其用于大型sql查询。” -请注意,这是获取en.wikipedia.org/wiki/SQL_injection的
减少活动时间

如何以这种方式或其他方式正确连接字符串,可以在参数化查询中给我SQL注入?
codelame

手动构建整个SQL查询(至少由“针对大型sql查询”建议)是不可行的。仅准备参数,而不是整个查询都应避免这种特定的安全风险。
减少活动

19

将它们与.运算符连接:

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

或使用字符串插值:

$result = "$data1 $data2";

11
$result = implode(' ', array($data1, $data2));

更通用。


1
这在您要创建一个定界列表的情况下非常有用,因为它会检查var是否$email_to = implode(', ', array($addr1, $addr2, addr3));不需要任何值,if($addr != '')等等
Aba 2016年

4
除非必须,否则不要选择数组函数。因为数组的功能总是比运算符慢。另外; 他们使用更多的公羊。
MERTDOĞAN2016年

9

可用的另一种形式是:

<?php
$data1 = "the color is";
$data2 = "red";
$result = "{$data1} {$data2}";


5

句点用于连接字符串。将两个字符串变量转换为单个变量的简单示例:

$full = $part1 . $part2;

在您的示例中,您想要执行以下操作:

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

您会注意到我在两个变量之间添加了一个空格字符串。这是因为您的原稿$data1没有以空格结尾。如果没有它们就将它们组合在一起,则$result变量最终将看起来像the color isred


5

您可以使用PHP执行此操作:

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

这将合并两个字符串,putput将为:“颜色为红色!”。


1
您虚构的输入值不代表OP的输入字符串,而是您回显了早于YEARS的解决方案。这不是一个JavaScript问题,因此建议无关紧要。这篇文章没有为页面增加任何价值。
mickmackusa

@mickmackusa,好吧,我更新了文本,您是对的,但是我在这里给了js答案,因为这是一个非常基本的问题,因此用户可以了解不同之处
sunil

1
您的更新未使用OP的文本。不要为php问题提供javascript解决方案。该答案的格式不正确,因此没有任何价值。
mickmackusa

4
$s = "my name is ";

$s .= "keyur";

echo $s; 

结果:

my name is keyur

9
欢迎使用StackOverflow。如果您回答问题,那很好。但是,如果这样做,请正确格式化。此外,您的答案已经给出。如何为这个已有四年历史的帖子增加附加价值?
T3 H40

6
这只是现有答案的重复。

4
$result = $data1 . $data2;

试试这个


5
这不是正确的答案。结果为“颜色为红色”。同样,您的答案与几年前发布的某人的答案重复。下投。
Jason Liu


0

我不清楚您的要求是什么,但是基本上您可以分别定义两个变量,然后将它们组合在一起。

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

$result=$data1.$data2;

这样,您甚至可以将$ data2声明为全局级别,这样您就可以在执行过程中更改其值,例如,它可以从复选框中获得答案“红色”。



-1

1.连接字符串(每个字符串之间的空格)

代码段:

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

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

输出:SachinTendulkar

2.在存在空格的地方连接字符串

代码段:

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

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

输出:Sachin Tendulkar

  1. 使用printf函数连接字符串。

代码段:

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

输出:
SachinTendulkar
Sachin Tendulkar


4
这个答案提供了其他答案没有提供的功能?
约翰·孔德

@rashedcs对我来说很棒!🏏
IPSDSILVA

-1

我相信最有效的方式是:

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

如果要实现本地化,则可以执行以下操作:

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

它有点慢,但是它没有假定语法规则。


-3

试试这个,我们可以在PHP中用点(。)符号附加字符串

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

echo $data1.$data2; //the color isred
echo $data1." ".$data2; // the color is red (we have appended space)

1
该答案没有提供其他答案。
约翰·孔德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.