如何从数组中找到字符串中的“http”?

时间:2014-01-29 15:37:58

标签: php regex arrays

在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

感谢您的建议

4 个答案:

答案 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

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.";

或者您可以使用foreachpreg_match

foreach($array as $check) {
    if (preg_match("/http/", $check))
    echo "http exist in the array of string.";
}