在PHP中,我有一个这样的数组:
array
0 => string 'open' (length=4)
1 => string 'http://www.google.com' (length=21)
2 => string 'blank' (length=5)
但它也可能像:
array
0 => string 'blank' (length=5)
1 => string 'open' (length=4)
2 => string 'http://www.google.com' (length=21)
现在使用in_array("blank", $array)
很容易找到“空白”,但如何查看一个字符串是否以“http”开头?
我试过
array_search('http', $array); // not working
array_search('http://www.google.com', $array); // is working
现在`http之后的一切?可能会有所不同(怎么写不一样,varie?可能会有所不同就是我的意思!)
现在我需要一个正则表达式,或者如何检查数组字符串中是否存在http
?
感谢您的建议
答案 0 :(得分:2)
尝试使用preg_grep函数,该函数返回与模式匹配的条目数组。
$array = array("open", "http://www.google.com", "blank");
$search = preg_grep('/http/', $array);
print_r($search);
答案 1 :(得分:2)
“欢迎使用PHP,这是一个功能。”
preg_grep("/^http\b/i",$array);
正则表达式解释说:
/^http\b/i
^\ / ^ `- Case insensitive match
| \/ `--- Boundary character
| `------ Literal match of http
`--------- Start of string
答案 2 :(得分:2)
没有正则表达式的解决方案:
$input = array('open', 'http://www.google.com', 'blank');
$output = array_filter($input, function($item){
return strpos($item, 'http') === 0;
});
输出:
array (size=1)
1 => string 'http://www.google.com' (length=21)
答案 3 :(得分:0)
您可以使用preg_grep
$match = preg_grep("/http/",$array);
if(!empty($match)) echo "http exist in the array of string.";
或者您可以使用foreach和preg_match
foreach($array as $check) {
if (preg_match("/http/", $check))
echo "http exist in the array of string.";
}