Php 如何在字符串中找到多个变量?
我有一个脚本,它检查变量Php 如何在字符串中找到多个变量?,php,Php,我有一个脚本,它检查变量$hello,看它是否包含“粉色”、“蓝色”和“红色”。对于它包含的每个变量,都会在字符串$finalstring中添加一些文本 有没有更简单的方法 $hello = "pink*blue*red*orange"; $finalstring = ""; if (strpos($hello, "pink") == true) { $finalstring .= "_pink"; } if (strpos($hello, "blue") == true) {
$hello
,看它是否包含“粉色”、“蓝色”和“红色”。对于它包含的每个变量,都会在字符串$finalstring
中添加一些文本
有没有更简单的方法
$hello = "pink*blue*red*orange";
$finalstring = "";
if (strpos($hello, "pink") == true) {
$finalstring .= "_pink";
}
if (strpos($hello, "blue") == true) {
$finalstring .= "_blue";
}
if (strpos($hello, "red") == true) {
$finalstring .= "_red";
}
echo $finalstring; // output: _pink_blue_red
您可以使用要检查的所有值(
$types
)创建一个数组,遍历所有值并检查它们是否可以在字符串中找到
$hello = "pink*blue*red*orange";
$finalstring = "";
$types = array('pink', 'blue', 'red');
foreach ($types as $type) {
if (stristr($hello, $type)) {
$finalstring .= '_' . $type;
}
}
您可以使用要检查的所有值(
$types
)创建一个数组,遍历所有值并检查它们是否可以在字符串中找到
$hello = "pink*blue*red*orange";
$finalstring = "";
$types = array('pink', 'blue', 'red');
foreach ($types as $type) {
if (stristr($hello, $type)) {
$finalstring .= '_' . $type;
}
}
使用正则表达式:
$hello = "pink*blue*red*orange";
$colors = array('pink', 'blue', 'orange');
if(!preg_match_all(sprintf("/%s/", join('|', $colors)), $hello, $match))
{
die('not found any color');
}
$finalstring = '_'. join('_', $match[0]);
echo $finalstring; // _pink_blue_orange
使用正则表达式:
$hello = "pink*blue*red*orange";
$colors = array('pink', 'blue', 'orange');
if(!preg_match_all(sprintf("/%s/", join('|', $colors)), $hello, $match))
{
die('not found any color');
}
$finalstring = '_'. join('_', $match[0]);
echo $finalstring; // _pink_blue_orange
您不能将
*
替换为.
?这只是一个示例,但不,替换*
不会摆脱“橙色”
<代码>“橙色”表示一个未知的文本字符串,所以我不能先替换*
,然后再替换orange
。为什么不使用数组来存储这些值呢?你不能用.
替换*
?这只是一个例子,但不,替换*
不能摆脱“橙色”
<代码>“orange”表示未知的文本字符串,因此我不能只替换*
,然后替换orange
。为什么不使用数组来存储这些值呢?我知道这代码更少,但效率更高吗?它似乎做了与我的代码完全相同的事情,因为它必须通过相同的字符串3次来检查变量。有没有办法检查所有三合一STRPO?@supercolville:如果你打算添加更多案例,这会更好,因为你只需向阵列添加一个新项目,而不是一个全新的If
条件。在这种情况下,效率是你不应该过分担心的事情。我知道这是更少的代码,但它更有效吗?它似乎做了与我的代码完全相同的事情,因为它必须通过相同的字符串3次来检查变量。有没有办法检查所有三合一STRPO?@supercolville:如果你打算添加更多案例,这会更好,因为你只需向阵列添加一个新项目,而不是一个全新的If
条件。在这种情况下,效率是你不应该过分担心自己的。
$hello = "pink*blue*red*orange";
$colors = array('pink', 'blue', 'orange');
if(!preg_match_all(sprintf("/%s/", join('|', $colors)), $hello, $match))
{
die('not found any color');
}
$finalstring = '_'. join('_', $match[0]);
echo $finalstring; // _pink_blue_orange