我无法解决这个问题,任何人都可以帮忙。
如果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
等堡垒。
提前谢谢。
答案 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...