Empecher l'entrer de lien URL

Petit nouveau ! | 6 Messages

16 sept. 2010, 13:49

Bonjour à tous,

je suis nouveau sur ce forum et je remercie php france d'offrir gratuitement ses espaces pour nous permettre de discuter php.

j'ai trouvé une fonction qui me permet d'empêcher l'écriture de lien URL dans les descriptions. Cette fonction peut vérifier les entrées http://site.com ou http://www.site.net ou www.site.fr sauf qu'elle ne vérifie pas les entrées simple comme site.com ou site.net etc...

Pouvez-vous m'aider sur cette fonction?

voici la fonction:
	function parseLinks($str) 
	{
    
	    $http = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "WEBADDRESS", $str);
	    $http = ereg_replace("www.[^<>[:space:]]+[[:alnum:]/]", "WEBADDRESS", $http);
	    $error = false;
		if(substr_count($http, 'WEBADDRESS')){
			return false;
		};
	    return true;
	}

ViPHP
ViPHP | 5462 Messages

16 sept. 2010, 20:53

enlève le www.
un adresse web ca commence pas forcement par www, le sous domaine c'est arbitraire on mets ce qu'on veux le www c'est plus historique qu'autre chose :wink:

Petit nouveau ! | 6 Messages

16 sept. 2010, 22:26

enlève le www.
un adresse web ca commence pas forcement par www, le sous domaine c'est arbitraire on mets ce qu'on veux le www c'est plus historique qu'autre chose :wink:
Merci de votre réponse,

j'ai essayé en enlevant le www. et je reçois l'erreur "La description ne peut contenir un Hyperlien" qu'importe ce que j'écris. Que ce soit un hyperlien http://www.site.com ou bonjour à tous. Le texte est mal filtrer.

ViPHP
ViPHP | 5462 Messages

16 sept. 2010, 22:43

enlève le www.
un adresse web ca commence pas forcement par www, le sous domaine c'est arbitraire on mets ce qu'on veux le www c'est plus historique qu'autre chose :wink:
Merci de votre réponse,

j'ai essayé en enlevant le www. et je reçois l'erreur "La description ne peut contenir un Hyperlien" qu'importe ce que j'écris. Que ce soit un hyperlien http://www.site.com ou bonjour à tous. Le texte est mal filtrer.
essayes avec juste ca : \w+\.[a-z]+, sachant qu'on pourrait toujours mettre une IP, c'est pas evidant comme verfification y'a plein de possibilités qui peuvent se confondre avec des chose qu'on rien avoir

Petit nouveau ! | 6 Messages

16 sept. 2010, 22:57

J'ai essayé comme ça
$http = ereg_replace("\w+\.[a-z]+", "WEBADDRESS", $http);
et il filtre bien www.site.com mais pas site.com.

ViPHP
ViPHP | 5462 Messages

16 sept. 2010, 22:59

J'ai essayé comme ça
$http = ereg_replace("\w+\.[a-z]+", "WEBADDRESS", $http);
et il filtre bien www.site.com mais pas site.com.
tu veux suprimer les liens ou dire que le texte n'est pas valide parce qu'il en contient un ?

Petit nouveau ! | 6 Messages

16 sept. 2010, 23:05

Je veux dire que le texte n'est pas valide parce qu'il contient un lien.

ViPHP
ViPHP | 5462 Messages

16 sept. 2010, 23:07

Je veux dire que le texte n'est pas valide parce qu'il contient un lien.
pourquoi faire un replace alors ?

un preg_match suffirait

EDIT :
function parseLink($str)
{
    if(preg_match('/(?:http:\/\/)|(?:\w+\.)[^\s]+/ui', $str))
    {
       return false;
    }
    else
    {
        return true;
    }
}
Modifié en dernier par stealth35 le 17 sept. 2010, 01:23, modifié 1 fois.

Petit nouveau ! | 6 Messages

17 sept. 2010, 01:20

Je reçois une erreur "Parse error: syntax error, unexpected '{' in C:\wamp\www\test\includes\core\checkout\step3submit.php on line 90"
et en ligne 90
87 function parseLink($str)
88{
89   if(preg_match('/(?:http:\/\/)|(?:\w+\.)[^\s]+/ui', $str)
90  {
91       return false;
92    }
93    else
94    {
95        return true;
96    }
97}

ViPHP
ViPHP | 5462 Messages

17 sept. 2010, 01:22

parenthèse a mettre en plus
if(preg_match('/(?:http:\/\/)|(?:\w+\.)[^\s]+/ui', $str))

Petit nouveau ! | 6 Messages

17 sept. 2010, 04:13

merci beaucoup ça fonctionne très bien.