2016-04-26 107 views
0

我找不出这个问题,请谁能帮忙。找到一个子字符串,其中包含空格(PHP)

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

例子 - 我有存储在数据库中的字符串,它看起来是这样的:

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

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

$substring = "Screen size:"; 

我想要实现的一般是,我想获取分号后的值,取决于子字符串。例如:

如果串= “颜色:”然后返回黑色

如果串= “重量:”然后返回2.3公斤

等要塞。

预先感谢您。

+2

双'爆炸()'? – frz3993

+0

@ frz3993确实爆炸找到一个空白的子字符串?我忘了提及,我的字符串中还有其他信息。它可以包含以下内容:“屏幕尺寸:15.6'; Somethingelse尺寸:20米”。所以,这意味着我无法搜索* size:*,我需要找到一个特定的单词序列 – qazerty23

+0

或者'preg_match'也可能是一个可行的解决方案。 –

回答

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" 
] 

希望这有助于

+0

噢,是的,这看起来像是一个很好的解决方案。非常感谢! – qazerty23

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

+0

谢谢,先生!这看起来像一个非常有趣的解决方案,所产生的'whatIsThe'功能看起来不错!我会尝试这一点,只要我有空闲时间! – qazerty23

+0

非常欢迎@ qazerty23 –

相关问题