【问题标题】:Find a substring, that contains whitespaces (PHP)查找包含空格的子字符串 (PHP)
【发布时间】:2016-04-26 16:06:51
【问题描述】:

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

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

示例 - 我有一个存储在数据库中的字符串,看起来像这样:

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

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

$substring = "Screen size:";

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

如果 substring = "Color:" 则返回 黑色

如果 substring = "Weight:" 则返回 2.3 kg

等等。

提前谢谢你。

【问题讨论】:

  • @frz3993 是否会爆炸找到带有空格的子字符串?我忘了提,我的字符串中还有其他信息。它可以包含以下内容:“屏幕尺寸:15.6'';其他尺寸:20m”。所以,这意味着我不能只搜索size:,我需要找到一个特定的单词序列
  • 或者preg_match 也可能是一个可行的解决方案。
  • explode() 没有找到任何东西。它就像将字符串分解为数组一样。例如,您将有一个类似['Color: black', 'Weight: 2.3 kg] 的数组,然后您将再次将explode(): 分隔。可能也使用array_walk()trim()
  • @frz3993 你是对的,对不起,我忘记了 explode 返回一个数组。谢谢!
  • 我想我迟到了,因为答案已经被接受了,但你可能也想看看我的答案,它可能对你有帮助。

标签: php string find substring whitespace


【解决方案1】:

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

希望对你有帮助

【讨论】:

  • 哦,是的,这看起来是一个非常适合我的情况的解决方案。非常感谢!
【解决方案2】:

我会这样做:

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

【讨论】:

  • 谢谢您,先生!这看起来是一个非常有趣的解决方案,生成的“whatIsThe”函数看起来不错!我也会试试这个,只要我有空闲时间!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 2015-02-18
  • 2015-04-19
相关资源
最近更新 更多