2016-09-15 3 views
0

У меня есть два типа ссылок, которые являются строки, взятые из базы данных:StrPos всегда дает истинное

http://www.website.com/anything-else.html 
www.website.com/anything-else.html 

мне все ссылки, которые будут отображаться с HTTP: // независимо от того, что так Im используя этот простой код, чтобы определить, ли есть ссылка HTTP в нем, и если не добавить:

if (strpos($links, 'http') !== true) { 
    $linkai = 'http://'.$links; 
} 

проблема заключается в том, что это добавление HTTP: // в какой-либо связи независимо от того, если у него есть или нет. Я пробовал == false ect. Ничего не работает. Есть идеи?

+1

просто использовать === ложь вместо == верно –

+0

Вау .. Я не закодированы довольно долго .. Мне нужно, чтобы вернуться к самым основам: D. Спасибо огромное! – DadaB

+0

@DadaB, ваш код должен работать как есть. Как вы определяете $ links? – Craig

ответ

0

Попробуйте

if (strpos($links, 'http') === false) { 
    $linkai = 'http://'.$links; 
} 

В StrPos документации говорит возвращаемое значение не всегда Boolean.

Предупреждение Эта функция может возвращать Boolean FALSE, но может также возвращать небулево значение, которое оценивается как FALSE. Для получения дополнительной информации прочитайте раздел о логических операциях. Используйте оператор === для проверки возвращаемого значения эту функцию ".

+0

Ответы должны иметь объяснения. – chris85

0
$arrParsedUrl = parse_url($links); 
      if (!empty($arrParsedUrl['scheme'])) 
      { 
       // Contains http:// schema 
       if ($arrParsedUrl['scheme'] === "http") 
       { 

       } 
       // Contains https:// schema 
       else if ($arrParsedUrl['scheme'] === "https") 
       { 

       } 
      } 
      // Don't contains http:// or https:// 
      else 
      { 
       $links = 'http://'.$links; 
      } 
      echo $links; 
+0

Ответы должны иметь объяснения. – chris85

Смежные вопросы