Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
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 12/09/2007, 00h08   #1
Membre habitué
 
Avatar de mimagyc
 
Inscription : novembre 2006
Messages : 310
Détails du profil
Informations personnelles :
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : novembre 2006
Messages : 310
Points : 115
Points : 115
Par défaut Supprimer les ^ et les 6 caractère qui suivent

Bonjour,
(je ne suis pas sur de l'emplacement du topic)

Comme le dit le titre, je cherche a supprimer les ^ et les 6 caractère qui suivent.

un exemple
Citation:
A valuable medicinal herb which ^000088counteracts the effects of poison^000000.
^ffffff_^000000
je veut donc ici supprimé les ^000088 , ^000000 , ^ffffff .

Comment procéder ?

Merci.

Edit : Voici ce que j'ai pu commencer :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
<?php
 
require_once("conf.php");
 
// connexion a la base de donnee
$connexion = mysql_connect($host,$user,$mdp) or die (mysql_error());
 
$db = mysql_select_db($db) or die (mysql_error());
 
$rq = mysql_query("SELECT * FROM `item_db_desc2`") or die (mysql_error());
 
while ($li = mysql_fetch_assoc($rq)) {
 
$id = $li['id'];
 
$desc = $li['desc'];
 
// si le caractere ^ est dans $desc
if(stristr($desc, '^') !== FALSE) {
 
echo "il est la<br />";
// je sépare en deux le contenu au niveau du ^
$in = explode ('^', $desc, 1);
 
 
$apres = substr($in[1], 6 );
 
$finiapres = str_replace($apres, "" , $in[1]);
 
$ins = $in[0].$finiapres ; 
 
if(stristr($desc, '^') !== FALSE) { echo"mais pas supprime <br />".$in[0]; }
 
$upd = mysql_query("UPDATE `item_db_desc2` SET `desc`='".mysql_real_escape_string($ins)."' WHERE id=$id ") or die (mysql_error());
 
 
 
}
 
}
 
?>
seulement j'ai un souci avec le explode, j'ai dans $in[0] toute mon text et dans $in[1] , j' n'ai rien.
mimagyc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 01h02   #2
Membre chevronné
 
Inscription : mars 2002
Messages : 611
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mars 2002
Messages : 611
Points : 761
Points : 761
En faisant un preg_replace avec le regex suivant, ca devrait fonctionner :

Je suis parti du principe que les 6 caractères étaient des caractères exprimant une valeur héxadécimale, de 0 à 9 et de A à F.
DelphiManiac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 01h04   #3
Membre habitué
 
Avatar de mimagyc
 
Inscription : novembre 2006
Messages : 310
Détails du profil
Informations personnelles :
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : novembre 2006
Messages : 310
Points : 115
Points : 115
Citation:
Je suis parti du principe que les 6 caractères étaient des caractères exprimant une valeur héxadécimale, de 0 à 9 et de A à F.
oui c'est exact, mais il ne va pas supprimé le reste?
enfin je ne sais pas utiliser preg_match,

comment faire?

j'avoue que j'aimerai bien que tu m'esplique un peu ca fonction, je n'arrive pas vraiment a comprendre sur php.net

Merci.

edit : mon explode déconne
Citation:
seulement j'ai un souci avec le explode, j'ai dans $in[0] toute mon text et dans $in[1] , j' n'ai rien.
Code :
1
2
 
$in = explode ("^", $desc,1);
mimagyc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 01h14   #4
Membre chevronné
 
Inscription : mars 2002
Messages : 611
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mars 2002
Messages : 611
Points : 761
Points : 761
Code :
1
2
3
4
5
<?php
  $str = "A valuable medicinal herb which ^000088counteracts the effects of poison^000000.^ffffff_^000000";
  $res = preg_replace('/\^[0-9a-fA-F]{6}/', '', $str);
  echo $res;
?>
et le résultat est :
Code :
A valuable medicinal herb which counteracts the effects of poison._
1er argument, le regex recherché, 2ième la valeur qui va remplacer le pattern trouvé, 3ième argument, une variable pour récupérer le résultat.
DelphiManiac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 01h23   #5
Membre habitué
 
Avatar de mimagyc
 
Inscription : novembre 2006
Messages : 310
Détails du profil
Informations personnelles :
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : novembre 2006
Messages : 310
Points : 115
Points : 115
ha kan meme ...

Je ne savais pas tout ca .... tres intéressant ...

Que veut dire ceci concrètement ?
Citation:
[0-9a-fA-F]
Au sinon merci
mimagyc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 01h29   #6
Membre chevronné
 
Inscription : mars 2002
Messages : 611
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mars 2002
Messages : 611
Points : 761
Points : 761
0-9 -> un caractère compris entre 0 et 9
a-f -> (ou) un caractère compris entre a et f
A-F -> (ou) un caractère compris entre A et F




{6} -> et ceci pour 6 caractères
DelphiManiac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 01h36   #7
Membre habitué
 
Avatar de mimagyc
 
Inscription : novembre 2006
Messages : 310
Détails du profil
Informations personnelles :
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : novembre 2006
Messages : 310
Points : 115
Points : 115
Merci

ca m'aide a mieux comprendre
mimagyc 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 23h26.


 
 
 
 
Partenaires

Hébergement Web