2017-03-09 1 views
2

J'ai un simple forum de discussion php et jquery pour mes utilisateurs. Je suis actuellement en train de remplacer les chaînes www. et http:// par une version d'URL liée afin de rendre les liens cliquables. Cela fonctionne génial, mais ne capte pas les liens https://. Qu'est-ce que je change pour le faire faire http ou https? Voici le code actuelRemplacer http et https ..?

$find = 'http://'; 
$check_for_links = strpos($message, $find); 
if($check_for_links === false) { 
    $message = preg_replace('/((www)[^ ]+)/', '<a href="http://$1">$1</a> ', $message); 
} else { 
    $message = preg_replace('/((http:\/\/)[^ ]+)/', '<a href="$1">$1</a> ', $message); 
} 
+0

Ajouter la 's' et la rendre facultative. 'https?:' – chris85

+0

ne reconnaît pas le s: https://regex101.com/r/3RYM1H/2 – Kaboom

+0

Vous avez besoin d'un espace sinon le '[^]' continue à consommer dans votre test. https://regex101.com/r/3RYM1H/3 ou changez le '[^] +' en '\ S +'. – chris85

Répondre

2

Utilisez la fonction preg_match au lieu de strpos à "attraper" à la fois schéma http et https:

if (!preg_match("/https?:/", $message)) { 
    $message = preg_replace('/((www)[^ ]+)/', '<a href="http://$1">$1</a> ', $message); 
} else { 
    $message = preg_replace('/((https?:\/\/)[^ ]+)/', '<a href="$1">$1</a> ', $message); 
} 
+0

merci cela a fonctionné – Kaboom

+0

@Kaboom, de rien – RomanPerekhrest