【问题标题】:php string finding substringsphp字符串查找子字符串
【发布时间】:2013-10-22 04:33:42
【问题描述】:

对不起,如果这是一个新手问题。 假设我有这个字符串(值名称和服务器可以更改): 另外我忘了说我知道“某事”的长度。

$str='something-name:Jon,server:localhost'

现在我必须提取值:'Jon' 和 'localhost' 并将它们放入变量中。

我现在在做什么:

if ((strpos($str, 'something')) !== false){
    $par_name = strpos($str, 'name:');
    if ($par_name !== false){
        $name = substr($n, 20);
    } 
}

现在:

$name == 'Jon,server:localhost'

相反,我只需要获取服务器子字符串的名称和之后。

$name == 'Jon'
$server == 'localhost'

我想我必须找到 substr 的第三个参数的确切值。 我不知道。

感谢您的回复。

【问题讨论】:

    标签: php string substring


    【解决方案1】:

    您可以使用explode() 轻松完成此操作。以逗号为分隔符分割字符串,以冒号为分隔符的部分进行分割,两部分都抓取冒号之前的部分:

    $str='something-name:Jon,server:localhost';
    list($part1, $part2) = explode(',', $str);
    list(,$name) = explode(':', $part1);
    list(,$server) = explode(':', $part2);
    

    Demo!

    【讨论】:

    • 是的,确实,它比我的更干净,但使用 list 有时会降低可读性。这里不是这样,相反,这里给出可读性。
    • 现在我想对两者都给出最佳答案,该死的。
    • @Carondimonio:我的有演示并且更短。 咳嗽 :P
    【解决方案2】:

    这只是一个快速示例,说明如何实现这一目标:

    $str='something-name:Jon,server:localhost'
    
    $explode = explode(',', $str);
    
    $explodePart1 = explode(':', $explode[0]);
    
    $explodePart2 = explode(':', $explode[1]);
    
    $name = explodePart1[1]
    $server = explodePart2[1];
    

    【讨论】:

      猜你喜欢
      • 2012-09-07
      • 2011-07-13
      • 1970-01-01
      • 2016-06-28
      • 2013-03-22
      • 1970-01-01
      • 2021-08-13
      相关资源
      最近更新 更多