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

时间:2016-04-26 16:06:52

标签: php string find substring whitespace

我无法解决这个问题,任何人都可以帮忙。

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

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

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

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

$substring = "Screen size:";

我想要实现的目标是,我希望在分号后获取值,具体取决于子字符串。例如:

如果 substring ="颜色:" 然后返回黑色

如果 substring ="重量:" 然后返回 2.3 kg

等堡垒。

提前谢谢。

2 个答案:

答案 0 :(得分:4)

你可能会像这样完成工作。我试着给你一步一步的解决方案,这样你就能理解它。 如果您有不了解的功能,请不要犹豫,查看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"
]

希望这有帮助

答案 1 :(得分:1)

我会这样做:

<?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