PHP — Поиск массива в массиве

#php #arrays #search

#php #массивы #Поиск

Вопрос:

Я пытался использовать Google в течение последнего часа подряд и перепробовал множество способов поиска массива в массиве.

Моя цель — найти ключевое слово в URL, а ключевые слова находятся в текстовом файле.

Это то, что у меня есть до сих пор, но не работает.

 $file = "keywords.txt";
$open = fopen($file,'r');
$data = fread($open,filesize($file));
$data = explode(" ",$data);
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$url = parse_url($url); //parse the URL into an array

foreach($data as $d)
{
    if(strstr($d,$url))
    {
    echo "yes";
    }
}
  

Это работает БЕЗ текстового файла или массива — но это не то, что я хочу.

Я был бы признателен, если кто-нибудь сможет мне помочь.

Комментарии:

1. Удалось ли вам заставить его работать Анонимно2011?

2. что вы имеете в виду, когда говорите, что он не работает. чего вы ожидаете и что это дает?

3. Я пытался использовать in_array (), подобный приведенному ниже методу vap0r, но по какой-то причине это не сработало, хотя я уверен, что это то, что я делал раньше… То, что я имел в виду, говоря, что это не работает, было ожидаемым результатом того, что php ответил «да»

Ответ №1:

Вот как я бы это сделал:

 $file = "keywords.txt";
$open = fopen($file,'r');
$data = fread($open,filesize($file));
$data = explode(" ",$data);
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$url = parse_url($url); //parse the URL into an array
foreach($data as $d){
  if(in_array($d,$url)){
    echo "yes";
  }
}
  

Комментарии:

1. Спасибо, Vap0r, это сработало отлично — я более чем уверен, что пробовал этот метод раньше (in_array()) lol.