Page 1 sur 3
Problème avec les esperluettes (&)
Posté : 04 juil. 2010, 19:32
par kokoloko10
Bonjour à tous,
Alors voilà, je travaille actuellement sur une sorte de raccourcisseur d'URL, et ce dernier utilise la fonction eregi().
Tout le script fonctionne avec la plupart des URL, mais pas avec les URL de Google Maps, surement à cause des esperluettes (&).
Exemple de lien Google Maps :
http://maps.google.fr/maps?f=q&source=s ... eocode=&q=...
Ma fonction est :
if(eregi("/[a-z]{2,4}", $URLlarge)) ...
Je suppose donc qu'il faille que je rajoute l'esperluette (&) à la prise en compte de la fonction eregi().
Oui, mais comment... ?
Si quelqu'un a une idée...
Merci par avance à vous

Re: Fonction eregi() et les esperluettes (&)
Posté : 04 juil. 2010, 20:17
par stealth35
utilise preg a la place de ereg (ereg étant déprécié en 5.3, profite pour prendre de bonne habitude

)
sinon t'attend quoi du
/[a-z]{2,4} ?
la il va juste prendre
maps
Re: Fonction eregi() et les esperluettes (&)
Posté : 04 juil. 2010, 22:43
par kokoloko10
Merci pour ta réponse.
Bah ma fonction avec "/[a-z]{2,4}" fonctionne plutôt bien...
Cette fonction est celle qui récupère l'URL à raccourcir.
Sinon, cela vient peut-être de ma fonction qui raccourci l'URL (?) :
function fshort($URLlarge)
{
global $length;
$URLshort = substr(str_shuffle('abcdefghijklmnopqrstuvwxyz1234567890'),0,$length);
$timestamp = time();
$URLshort = mysql_real_escape_string($URLshort);
$insert_query = "INSERT INTO `shorturl` (`URLshort`, `$URLlarge`, `timestamp`) VALUES ('$URLshort', '$URLlarge', NOW() );";
$result = mysql_query($insert_query);
return $URLshort;
}
?>
Re: Problème avec les esperluettes (&)
Posté : 04 juil. 2010, 22:56
par stealth35
la fonction n'est pas bonne, tu risques d'avoir des collision de nom reque du coté de
uniqid (plus ta collation mysql en
cs)

Re: Problème avec les esperluettes (&)
Posté : 04 juil. 2010, 23:07
par kokoloko10
J'ai fais quelques modifications de noms...
function shorten($fullURL)
{
global $length;
$shortURL = substr(str_shuffle('abcdefghijklmnopqrstuvwxyz1234567890'),0,$length);
$timestamp = time();
$shortURL = mysql_real_escape_string($shortURL);
$insert_query = "INSERT INTO `shorturl` (`shortURL`, `fullURL`, `timestamp`) VALUES ('$shortURL', '$fullURL', NOW() );";
$result = mysql_query($insert_query);
return $shortURL;
}
?>
(PS : Je suis un ultra-débutant, ça se sent... ?

)
Re: Problème avec les esperluettes (&)
Posté : 04 juil. 2010, 23:11
par stealth35
ta pas besoin de rajoute les & a cette endroit la
et $timestamp = time(); ca te sert pas
a quel niveau est ton problème , ca s'écrit mal dans ta base ?
Re: Problème avec les esperluettes (&)
Posté : 04 juil. 2010, 23:16
par kokoloko10
Oui exactement.
Si je demande de raccourcir cette URL :
Code : Tout sélectionner
http://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=...
Et bah dans ma base, est seulement écrit :
Tu vois ce que je veux dire ?
Re: Problème avec les esperluettes (&)
Posté : 04 juil. 2010, 23:20
par stealth35
Oui exactement.
Si je demande de raccourcir cette URL :
Code : Tout sélectionner
http://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=...
Et bah dans ma base, est seulement écrit :
Tu vois ce que je veux dire ?
faut faire un escape aussi
$fullURL = mysql_real_escape_string($fullURL);

Re: Problème avec les esperluettes (&)
Posté : 04 juil. 2010, 23:24
par kokoloko10
Ahhh, ça doit être ça...
Il y a un endroit particulier pour le placer ?
Quelque chose comme ça ? :
function shorten($fullURL)
{
global $length;
$shortURL = substr(str_shuffle('abcdefghijklmnopqrstuvwxyz1234567890'),0,$length);
$timestamp = time();
$shortURL = mysql_real_escape_string($shortURL);
$insert_query = "INSERT INTO `shorturl` (`shortURL`, `fullURL`, `timestamp`) VALUES ('$shortURL', '$fullURL', NOW() );";
$result = mysql_query($insert_query);
$fullURL = mysql_real_escape_string($fullURL);
return $shortURL;
}
?>
Re: Problème avec les esperluettes (&)
Posté : 04 juil. 2010, 23:32
par stealth35
non avant de definir ta requetes, sinon ca fais pas effet, donc avant ton $insert_query
Re: Problème avec les esperluettes (&)
Posté : 04 juil. 2010, 23:37
par kokoloko10
Ok, merci pour ton aide.
Je vais essayer ça.
Je ne promet rien...
Merci pour ta patience

Re: Problème avec les esperluettes (&)
Posté : 04 juil. 2010, 23:51
par kokoloko10
Bon... Bah je n'ai pas de chance... J'ai essayer ça, mais sans succès :
function shorten($fullURL)
{
global $length;
$shortURL = substr(str_shuffle('abcdefghijklmnopqrstuvwxyz1234567890'),0,$length);
$timestamp = time();
$shortURL = mysql_real_escape_string($shortURL);
$fullURL = mysql_real_escape_string($fullURL);
$insert_query = "INSERT INTO `shorturl` (`shortURL`, `fullURL`, `timestamp`) VALUES ('$shortURL', '$fullURL', NOW() );";
$result = mysql_query($insert_query);
return $shortURL;
}
?>
C'est bizarre, toutes les URL fonctionnent, sauf celles contenant un esperluette (&), il ne prend plus en compte à partir du "&"...
Mais qu'ai-je fais de malll ?!

Re: Problème avec les esperluettes (&)
Posté : 05 juil. 2010, 00:14
par stealth35
fais un
echo $insert_query,
d'ailleurs essaye de voir les erreurs
$result = mysql_query($insert_query) or exit(mysql_error());
Re: Problème avec les esperluettes (&)
Posté : 05 juil. 2010, 00:24
par kokoloko10
Apparemment il n'y a pas d'erreurs.
Tout est correctement généré, comme s'il n'y avait pas d'esperluette...
Re: Problème avec les esperluettes (&)
Posté : 05 juil. 2010, 00:30
par stealth35
Apparemment il n'y a pas d'erreurs.
Tout est correctement généré, comme s'il n'y avait pas d'esperluette...
montre ce que rend echo $insert_query