traitement d'une chaine en PHP

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


sim100
WRInaute accro
WRInaute accro
 
Messages: 1271
Inscription: Dim Fév 02, 2003 18:45

traitement d'une chaine en PHP

Message le Jeu Juin 14, 2007 14:26

Bonjour
Je voudrais sur par exemple cette chaine de caractère:

-http://www.site.com/topic-whitburn-rogue-tradesmen-688-32-3

enlever la fin à partir du tiret, soit dans ce cas la enlever le -3 pour qu'il reste

-http://www.site.com/topic-whitburn-rogue-tradesmen-688-32

Autre exemple, si j'ai
-http://www.site.com/topic-whitburn-rogue-tradesmen-688-32-12

il faut enlever le -12 pour qu'il reste

-http://www.site.com/topic-whitburn-rogue-tradesmen-688-32


Voila, y a t'il une petite fonction toute simple?

Merci pour l'aide


Krysss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 139
Inscription: Ven Fév 02, 2007 9:36

Message le Jeu Juin 14, 2007 14:59

$sRestant = substr("http://www.site.com/topic-whitburn-rogue-tradesmen-688-32-3", 1, 57);


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Jeu Juin 14, 2007 15:14

c'est exactement le genre de fonction qui manque en php (du moins 4XX)

en plus celle qui te donne la position de la dernière occurence est buggée

un explode('-'

et un implode('-' sur count -1 devrait etre fiable

rog


Krysss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 139
Inscription: Ven Fév 02, 2007 9:36

Message le Jeu Juin 14, 2007 15:16

Bah mon substr ne vous plait pas ?


sim100
WRInaute accro
WRInaute accro
 
Messages: 1271
Inscription: Dim Fév 02, 2003 18:45

ouai

Message le Jeu Juin 14, 2007 15:17

Krysss l'URL n'est jamais la même, elle peut être plus longue
donc le 57 est faussé!

Pour rog, tu as un exemple d'utilisation de ta fonction?

Merci


Krysss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 139
Inscription: Ven Fév 02, 2007 9:36

Message le Jeu Juin 14, 2007 15:33

ben c'etait pas précisé dans les specs...


Krysss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 139
Inscription: Ven Fév 02, 2007 9:36

Message le Jeu Juin 14, 2007 15:35

A tout hazard, http://www.site.com/topic-whitburn-rogu ... men-688-32, c'est ça les 57 caracteres...


Bh@Mp0
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 245
Inscription: Mar Jan 18, 2005 19:02

Message le Jeu Juin 14, 2007 15:42

Code: Tout sélectionner
substr($string, 0, strrpos($string, "-"));


Je vois pas en quoi strrpos() serait pas fiable ...


Krysss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 139
Inscription: Ven Fév 02, 2007 9:36

Message le Jeu Juin 14, 2007 15:45

Non elle est pas buggée, elle marche très bien que ça soit avec PHP 4 ou 5

unpassant
WRInaute impliqué
WRInaute impliqué
 
Messages: 475
Inscription: Mar Fév 15, 2005 17:25

Message le Jeu Juin 14, 2007 17:14

A tester :

Code: Tout sélectionner
$fin_url = end(explode("-", $url));
$url = substr($url, 0, strlen($url) - strlen ($fin_url) - 1);



Edit: Je vais quand meme expliquer le code, première ligne je recupe le chiffre à enlever, puis la seconde je coupe la chaine en faisant la longueur de l'url moin la longueur du chiffre moin 1 pour le tiret. C'est pompeu mais ca devrai marcher, je n'ai pas tester.


sim100
WRInaute accro
WRInaute accro
 
Messages: 1271
Inscription: Dim Fév 02, 2003 18:45

ok

Message le Jeu Juin 14, 2007 17:34

OK merci
Le code de Bh@Mp0 marche bien

Merci encore

unpassant
WRInaute impliqué
WRInaute impliqué
 
Messages: 475
Inscription: Mar Fév 15, 2005 17:25

Message le Jeu Juin 14, 2007 17:51

Ha tien je ne connaissai pas stRRpos ^^


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Ven Juin 15, 2007 11:18

la fonction me retournait la position de la premiere occurence

apres une recherche sur le net, j'ai remarqué que je n'étais pas le seul à rencontrer ce probleme

et si c'etait fiable j'aurait pas été obligé de pondre celle ci pour virus tester

Code: Tout sélectionner
#########################################################################################################################
#    the function will retrive the position byte to end the clone gen
function _strrpos($haystack,$needle){
#   
if(empty($haystack) || empty($needle))
   {
   $return = FALSE;
   }
   else
   {
   $explode = explode($needle,$haystack);
   $size = strlen(end($explode));
   $return = strlen($haystack) - ($size);
   }
unset($haystack, $needle, $explode, $size);
#
return $return ;
}
#########################################################################################################################


rog


Bh@Mp0
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 245
Inscription: Mar Jan 18, 2005 19:02

Message le Ven Juin 15, 2007 11:39

Ah bah ça doit être lié à la version de PHP alors, car j'ai jamais eu de problèmes (mais je veux bien te croire :))

Sinon, y'a une autre solution en utilisant preg_match() :
Code: Tout sélectionner
preg_match("|(.*)-([^-]*)|", $string, $match);

Mais bon, on arrive dans des choses qui servent à rien, même si ça fait plaisir :D


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités