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 01/11/2007, 22h20   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 3
Points : 1
Points : 1
Par défaut Caractère louche à preg_matcher

yo

petite colle pour vous. Entre integer et PRIMARY_KEY il y a un espace qui en fait n'en est pas un. Je cherchais a executer cette exemple, qui est donc un copier collé, par un regexp php, or je n'arrive pas a faire un pregmatch de ce caractere.
Ce n'est ni une tabulation, ni un espace.

Code :
1
2
3
4
5
6
7
CREATE TABLE clients
(
	id		integer	PRIMARY_KEY	,
	nom		string	NOT_NULL	,
	pnom		string			,
	age		integer
);
le regexp
Code :
if (preg_match('/(CREATE TABLE )([[:alnum:]]*) *\((.+)\);/', $com, $var))
petit imprim ecran de code dans notepad++ avec mise evidence du caractere en question:

shivka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2007, 22h55   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Votre expression par rapport au texte donné ne convient pas : le flag s est requis pour que le métacaractère . inclut les sauts à la ligne (ce n'est pas le cas par défaut). L'espace juste après la deuxième parenthèse capturante n'est pas présent dans votre exemple mais est un retour à la ligne : je pense qu'il serait à remplacer par \s (équivalent de [[:space:]]).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2007, 13h14   #3
Membre régulier
 
Inscription : mars 2004
Messages : 201
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 201
Points : 72
Points : 72
D'après ton masque, tu sembles vouloir récupérer les variables de la table...
Si c'est ce que tu veux faire:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?
 
$com = '
CREATE TABLE clients
(
	id		integer	PRIMARY_KEY	,
	nom		string	NOT_NULL	,
	pnom		string			,
	age		integer
);
';
 
if (preg_match('/(CREATE TABLE)([[:blank:]]+)([[:alpha:]]+)([\r\n]*)\(([[:alpha:][:punct:]\s]+)\);/', $com, $var)) {
 echo '<pre>';
  print_r($var);
 echo '</pre>';
}
 
?>
Sinon, j'ai pas bien saisi ce que tu cherches à faire...
hush est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h34.


 
 
 
 
Partenaires

Hébergement Web