Сравните строку массива со строкой

Я заканчиваю проект, но мне нужно сравнить, если код состояния HTTP совпадает с другим. У меня есть большой алгоритм, и я уменьшил их, и я определил проблему: у меня есть массив с именем "$ file_headers", и в позиции ["Status"] сохраняется "HTTP/1.1 301 Moved Permanently", а в предложении if я сравните с "HTTP/1.1 301 Moved Permanently" (что, очевидно, то же самое), но мой код не говорит то же самое, что и я. Я определяю код статуса HTTP с помощью cURL. Мой PHP-код выглядит следующим образом:

<?php
// create curl resource
$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, "fb.com");

//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//enable headers
curl_setopt($ch, CURLOPT_HEADER, 1);
//get only headers
curl_setopt($ch, CURLOPT_NOBODY, 1);
// $output contains the output string
$output = curl_exec($ch);

// close curl resource to free up system resources
curl_close($ch);

$data = explode("\n",$output);
$headers_one = $data;
$headers_two = array();

$headers_two['Status'] = $data[0];
array_shift($data);
foreach($data as $part){
    $middle = explode(":",$part);

    $msg = null;
    if(sizeof($middle) > 2){
      if(strpos($middle[0],"Location") === false){   
          for($i = 1; $i <= sizeof($middle)-1;$i++){
            $msg .= $middle[$i];
          }
      } else {
          for($i = 1; $i <= sizeof($middle)-1;$i++){
            if($i == 1){
                $msg .= $middle[$i] . ":";
            } else {
                $msg .= $middle[$i];
            }
          } 
      }    
    } else if(isset($middle[1])){
      $msg = $middle[1];
    }
    $headers_two[trim($middle[0])] = trim($msg);
}

array_pop($headers_one);
array_pop($headers_one);
array_pop($headers_two);

$file_headers = $headers_two;
if($file_headers["Status"] === ("HTTP/1.1 301 Moved Permanently") || $file_headers["Status"] === ("HTTP/1.1 301")){
  echo "OK!";
} else {
  echo "NO!";
}

//print all headers as array
/*echo "<pre>";
print_r($headers_one);
echo "</pre><br />";*/
echo "<pre>";
echo $file_headers["Status"];
echo "</pre>";
?>

Если кто-нибудь может мне помочь, я был бы признателен. СПАСИБО И УЛУЧШИТЕ ДЕНЬ!

1 ответ

Решение

$headers_two['Status'] это единственный элемент, который вы не trim()Таким образом, вокруг него есть пробелы, что делает сравнение неудачным. Сделай это так:

$headers_two['Status'] = trim($data[0]);

И это будет работать просто отлично.

Другие вопросы по тегам