我有一个包含如下字符串的数组:
209@ext-local : SIP/209 State:Idle Watchers 2
208@ext-local : SIP/208 State:Unavailable Watchers 1
如何回显状态,例如空闲或不可用?
感谢。
答案 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];