Bonjour,
Je ne suis pas très à l'aise avec preg_replace, que j'utilise peu et quand je l'utilise, c'est dans des fonctions écrites il y a longtemps ... donc merci par vance pour votre indulgence

Je souhaite remplacer tout ce qui n'est pas alphabétique, ni en majuscule ni en minuscule, par un underscore. J'arrive à changer tout ce qui n'est pas en minuscule OU tout ce qui n'est pas en majuscule

Voici le code complet du script
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
<?php
header('Content-type: text/xml; charset=utf-8');
define('EOL', "\r\n");
$vl_c_entete='';
$vl_c_entete.='<?xml version="1.0" encoding="utf-8"?>';
$vl_c_entete.='<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"';
$vl_c_entete.=' xmlns:row="http://dummy/rdf#" xmlns:NC="http://home.netscape.com/NC-rdf#">';
$vl_c_entete.='<RDF:Bag about="urn:data:row">';
echo $vl_c_entete; 
$vv_chaine="AAA je mets plein de commentaires d''ici à (la)-en passantt par &lt;(#">]=\\ j''avais oublié)";
echo('<RDF:li><RDF:Description>'.EOL);  
 
 
  $a[0]='/[^a-z]/';
//$a[0]='/[^a-z][^A-Z]\\)/';
//  $a[1]='/[^A-Z]/';
  $b[0]='_';
//  $b[1]='_';
 
  $fieldname=preg_replace($a, $b, $vv_chaine);
//$fieldname=preg_replace($vl_c_avant, $vl_c_apres, $vv_chaine);
 
echo(EOL.'<row:'.$fieldname.'>'.EOL);
echo $vv_chaine;
 
echo(EOL.'</row:'.$fieldname.'>'.EOL);
echo(EOL.'</RDF:Description></RDF:li>'.EOL);
echo('</RDF:Bag>'.EOL);
echo('</RDF:RDF>'.EOL);
 
?>
Si vous l'exécutez, le résultat par de lui même !! Je précise que je ne souhaite pas passer toute la chaine en minuscule avant le remplacement.
D'avance, merci pour votre aide.