2016-09-15 1 views
0

J'ai deux types de liens qui sont des chaînes tirées de la base de données:strpos donne toujours vrai

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

Je dois tous les liens à afficher avec http: // peu importe si Im en utilisant ce code simple pour déterminer si le lien a Http et sinon ajouter:

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

Le problème est, il ajoute http: // à tout lien, peu importe si elle a ou non. J'ai essayé == faux ect. Rien ne fonctionne. Des idées?

+1

il suffit d'utiliser === false au lieu de == true –

+0

Wow .. Je ne l'ai pas codé pour assez longtemps .. Je dois revenir à la base même: D. Merci beaucoup! – DadaB

+0

@DadaB, votre code devrait fonctionner tel quel. Comment définissez-vous les liens $? – Craig

Répondre

0

Essayez cette

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

Dans la documentation strpos dit la valeur de retour ne Boolean toujours.

« Avertissement Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur non booléenne qui évalue à FALSE. S'il vous plaît lire la section sur les booléens pour plus d'informations. Utilisez l'opérateur === pour tester la valeur de retour cette fonction. "

+0

Les réponses devraient avoir des explications. – 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

Les réponses doivent avoir des explications. – chris85