查找包含空格的子字符串 (PHP)

Find a substring, that contains whitespaces (PHP)

我无法解决这个问题,请大家帮忙。

如果子字符串包含空格,如何在字符串中查找子字符串?

示例 - 我在数据库中存储了一个如下所示的字符串:

$string = "Color: black; Weight: 2.3 kg; Screen size: 15.6''; Screen resolution: 1366 x 768;"

有没有办法得到这个子串的位置?

$substring = "Screen size:";

总的来说,我想要实现的是,我想根据子字符串获取分号后的值。例如:

if substring = "Color:" then return black

if substring = "Weight:" then return 2.3 kg

等堡

提前致谢。

你可能会像这样完成工作。我试着给你一个一步一步的解决方案,这样你就可以理解了。 如果有您不知道的功能,请不要犹豫查看 PHP 文档。

初始字符串

$string = "Color: black; Weight: 2.3 kg; Screen size: 15.6''; Screen resolution: 1366 x 768;";

$array = explode(';',$string); 

现在,$array 看起来像:

[
    "Color: black",
    "Weight: 2.3 kg",
    "Screen size: 15.6''",
    "creen resolution: 1366 x 768"
]

然后遍历数组再展开

$finalArray = array();
$foreach ($elem in $array) {
     $keyValue = explode(':',$elem);
     $finalArray[$keyValue[0]] = $keyValue[1];
}

现在 $finalArray 看起来像 :

[
    "Color" => "black",
    "Weight" => "2.3 kg",
    "Screen size" => "15.6''",
    "creen resolution" => "1366 x 768"
]

希望对您有所帮助

我会这样做:

<?php

$string = "Color: black; Weight: 2.3 kg; Screen size: 15.6''; Screen resolution: 1366 x 768;";
$specs = array();
preg_match_all('/(.*?):\s+(.*?); ?/i', $string, $matches, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($matches[1]); $i++) {
    $specs[$matches[1][$i]] = $matches[2][$i];
}

function whatIsThe($item, $specs){
return $specs[$item];
}

echo whatIsThe("Color", $specs);
//black
echo whatIsThe("Screen resolution", $specs);
//1366 x 768
//etc...

Ideone Demo