Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/12/2011, 15h37   #1
Membre du Club
 
Inscription : mai 2003
Messages : 271
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : mai 2003
Messages : 271
Points : 65
Points : 65
Envoyer un message via MSN à lelectronique.com
Par défaut Couper une chaine à un certain caractère suivi de chiffre

Bonjour,
je suis la recherche d'une fonction me permettant de couper une chaine à un caractere donné suivi de chiffre
actuellement j'ai fait:
Code :
 $var =  explode('-t', $chaine)
mais j'ai oublié que ma chaine pouvait etre composer comme ceci
Code :
depannage-tv-numerique-t583983.html
il coupe alors au premier -t rencontre hors je voudrais qu'il coupe au dernier
merci d'avance pour votre aide
Ludo
__________________
Tout sur le cyclisme : Annuaire vélo - Magasin Vélo - Comparateur Vélo - Emploi Vélo
lelectronique.com est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 15h55   #2
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
Bonjour,

En fait ce n'est pas vraiment un problème en soit mais il y a deux façon :


Tu veux garder uniquement le bout de chaine avec les numéros.
Dans ce cas il te suffit de récuperer uniquement le dernier tableau de ton explode et le tour est joué !
$var[sizeof($var) - 1];


Tu veux garder les deux bouts (les numéros mais également ce qui est avant) dans ce cas il te suffit de reconstruire cette chaîne toi même :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$chaine = "depannage-tv-numerique-t583983.html";
$tab = explode($chaine);
/* On a donc :
 * $tab[0] = depannage
 * $tab[1] = v-numerique
 * $tab[2] = 583983.html
 */
 
//La partie qui t’intéresse est donc la dernière
$ceQueJeVeux = $tab[sizeof($tab) - 1];
 
//Reconstitution du reste de la chaîne
$ceQuiReste = "";
for($i = 0; $i < sizeof($tab) - 2; $i++)
    $ceQuiReste .= $tab[$i] . '-t';
//Un '-t' est peut être en trop à la fin de la chaîne, je ne sais pas si tu veux le garder. Si ce n'est pas le cas :
$ceQuiReste = substr($ceQuiReste, 0, -2); //Supprime les deux derniers caractères (-t)
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 16h08   #3
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Heu...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$a = "depannage-tv-numerique-t583983.html";
$b = "depannage-t583983.html";
 
$split = explode('-t', $a);
$after = array_pop($split);
$before = implode('-t', $split);
 
var_dump($before,$after);
 
$split = explode('-t', $b);
$after = array_pop($split);
$before = implode('-t', $split);
 
var_dump($before,$after);
Faut pas se compliquer la vie...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/12/2011, 16h08   #4
Membre du Club
 
Inscription : mai 2003
Messages : 271
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : mai 2003
Messages : 271
Points : 65
Points : 65
Envoyer un message via MSN à lelectronique.com
merci pour ta réponse en faite il me faut pratiquement tout garder c'est suite à une migration de mon forum, les urls ont changés et je ne veux pas perdre mon référencement je souhaite mettre des redirections 301...

mon but est d'avoir : 583983-depannage-tv-numerique
__________________
Tout sur le cyclisme : Annuaire vélo - Magasin Vélo - Comparateur Vélo - Emploi Vélo
lelectronique.com est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 16h15   #5
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
Au temps pour moi je ne connaissait pas la fonction array_pop.

Très pratique
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 16h32   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Code :
1
2
3
4
5
6
$a = "depannage-tv-numerique-t583983.html";
$split = explode('-t', $a);
$num = preg_replace('~\.\w+~', '', array_pop($split));
$new = $num . "-". implode('-t', $split);
 
echo $new;
ce qui, en réalité, se résume à:
Code :
echo preg_replace('~(.*)(-t[0-9]+)\.html~', '$2-$1', $a);
arf
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 16h33   #7
Membre du Club
 
Inscription : mai 2003
Messages : 271
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : mai 2003
Messages : 271
Points : 65
Points : 65
Envoyer un message via MSN à lelectronique.com
je viens de tester ce bout de code et cela ne fonctionne pas tout le temps

Code :
1
2
3
4
5
6
7
8
9
10
11
 
	$page = $_SERVER['REQUEST_URI'];
	$page = explode('/f/',$page);
 
	$split = explode('-t', $page[1]);
	$after = array_pop($split);
	$before = implode('-t', $split);
	$after = explode('.',$after);
 
	header("Status: 301 Moved Permanently", false, 301);   
	header ('Location: http://www.lelectronique.com/forum-electronique/threads/'.$after[0].'-'.$before);
url testé : electroforum.info/f/panne-alimentation-tv-proline-t24559.html
renvoi vers : lelectronique.com/forum-electronique/threads/v-proline-panne-alimentation

__________________
Tout sur le cyclisme : Annuaire vélo - Magasin Vélo - Comparateur Vélo - Emploi Vélo
lelectronique.com est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 16h40   #8
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
ok qu'est ce que tu dis de ça:
Code :
1
2
3
4
5
6
7
8
$a = "depannage-tv-numerique.html";
$b = "depannage-tv-numerique-t1654978.html";
 
$pattern = array('~(.*)-t([0-9]+)\.\w+~', '~\.\w+~');
$replace = array('$2-$1', '');
 
echo preg_replace($pattern, $replace, $a);
echo preg_replace($pattern, $replace, $b);
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 16h44   #9
Membre du Club
 
Inscription : mai 2003
Messages : 271
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : mai 2003
Messages : 271
Points : 65
Points : 65
Envoyer un message via MSN à lelectronique.com
euh autant pour moi le bout de code que j'ai mis en erreur fonctionne correctement problème de cache avec FF à priori...

merci beaucoup pour votre aide
__________________
Tout sur le cyclisme : Annuaire vélo - Magasin Vélo - Comparateur Vélo - Emploi Vélo
lelectronique.com est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 16h53   #10
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
vérifie que les expressions régulières que je viens de mettre fonctionne dans ton cas, c'est quand même un poil plus propre
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h15.


 
 
 
 
Partenaires

Hébergement Web