返回字符串的一部分

时间:2014-09-17 15:19:22

标签: php

我有一个包含如下字符串的数组:

209@ext-local : SIP/209 State:Idle Watchers 2
208@ext-local : SIP/208 State:Unavailable Watchers 1

如何回显状态,例如空闲或不可用?

感谢。

4 个答案:

答案 0 :(得分:1)

使用正则表达式,它将匹配包含字母和数字的任何字符串。

$string = '209@ext-local : SIP/209 State:Idle Watchers 2';
preg_match("/State\:([A-Za-z0-9]+)/", $string, $results);

echo $results[1]; // Idle

答案 1 :(得分:0)

快速(又脏)的方式。假设您的数组包含上面列出的完整元素,则数组元素值不包含空闲'或者'不可用'除了你列出的以外的任何其他能力,你只是想要回应价值而且"闲置"或"不可用":

//$a being your array containing the values you listed above
foreach ($a as $status) {
    if (strpos($status, "Idle") == true)
        echo $status . " is idle";
    elseif (strpos($status, "Unavailable") == true)
        echo "$status" . " is unavailable";
}

答案 2 :(得分:0)

假设您的字符串格式相同,您可以尝试使用explode()拆分字符串,该字符串返回一个字符串数组,由提供的分隔符分隔,如

foreach ($yourStrings as $s) {
    $colonSplit = explode(":", $stringToSplit);
    $nextStringToSplit = $colonSplit[2];
    $spaceSplit = explode(" ", $nextStringToSplit);
    $status = $spaceSplit[0];

    echo $status;
}

可能不优雅,但应该有效。

答案 3 :(得分:0)

strpos将搜索​​字符串以查看它是否包含按照确切顺序排列的字符。 如果单词idle或unavailable有可能以字符串中的任何其他方式显示,则strpos将不会始终有效。

您可以使用php explode并将sting解析为字符串数组。

浓淡

$string = "209@ext-local : SIP/209 State:Idle Watchers 2";
$string = explode(':', $string);

会给你[' 209 @ ext-local',' SIP / 209 State',' Idle Watchers 2']。然后,如果你爆炸第三个条目我的' '你会得到答案。

$answer = explide(' ', $string[2]);
echo $answer[0];