begin process at 2012 05 31 14:20:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

REGEX


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

REGEX

mercredi 23 novembre 2005 à 19:58:11 | REGEX

massacr

Membre Club

Bonjour

Je débute en expressions régulières, et je suis confronté à un problème.

Je dispose de ceci dans une variable :

<table id="composition">

<tr id="titretableau">
<td>Récit expressif</td>
<td>Positif expressif</td>
<td>Grand orgue</td>
<td>Pédalier</td>
</tr>

<tr>
<td>
<ul>
Bourdon 16
cor de nuit 8
flûte traversière 8
gambe 8
voix celeste 8
flûte 4
octavin 2
cornet 5 rangs
cor anglais 16
hautbois 8
trompette harmonique 8
clairon 4, voix humaine 8
tremblant
</ul>
</td>
<td>
<ul>
quintaton 16
cor de nuit 8
flutes 8 et 4
salicional 8
prestant 4
quartede nasard 2
nasard
tierce
plein jeu 3 rangs
clarinette 8
trompette 8
</ul>
</td>
<td>
<ul>
Montres 16 et 8
bourdon 8
flute harmonique 8
violon 8
prestant 4
doublette 2
cymbale 4 rangs
fourniture 5 rangs
basson 16
trompette 8
clairon 4
</ul>
</td>
<td>
<ul>
contrebasse 16
soubasse 16
flute 8
flute 4 bombarde 16
trompette 8
</ul>
</td>
</tr>

</table>

Et je voudrais arriver à ceci :

<table id="composition">

<tr id="titretableau">
<td>Récit expressif</td>
<td>Positif expressif</td>
<td>Grand orgue</td>
<td>Pédalier</td>
</tr>

<tr>
<td>
<ul>
<li>Bourdon 16
</li>
<li>cor de nuit 8</li>
<li>flûte traversière 8</li>
<li>gambe 8</li>
<li>voix celeste 8v
<li>flûte 4</li>
<li>octavin 2</li>
<li>cornet 5 rangs</li>
<li>cor anglais 16</li>
<li>hautbois 8</li>
<li>trompette harmonique 8</li>
<li>clairon 4, voix humaine 8</li>
<li>tremblant</li>
</ul>
</td>
<td>
<ul>
<li>quintaton 16</li>
<li>cor de nuit 8</li>
<li>flutes 8 et 4</li>
<li>salicional 8</li>
<li>prestant 4</li>
<li>quartede nasard 2</li>
<li>nasard</li>
<li>tierce</li>
<li>plein jeu 3 rangs</li>
<li>clarinette 8</li>
<li>trompette 8</li>
</ul>
</td>
<td>
<ul>
<li>Montres 16 et 8</li>
<li>bourdon 8</li>
<li>flute harmonique 8</li>
<li>violon 8</li>
<li>prestant 4</li>
<li>doublette 2</li>
<li>cymbale 4 rangs</li>
<li>fourniture 5 rangs</li>
<li>basson 16</li>
<li> trompette 8</li>
<li> clairon 4</li>
</ul>
</td>
<td>
<ul>
<li> contrebasse 16</li>
<li> soubasse 16</li>
<li> flute 8</li>
<li> flute 4 bombarde 16</li>
<li> trompette 8</li>
</ul>
</td>
</tr>

</table>

Que dois-je utiliser ???
Merci de m'aider.
A bientôt
mercredi 23 novembre 2005 à 20:13:11 | Re : REGEX

J_G

Salut...

J'aime bien ce genre de petit problème, car il y'a souvent une solution simple est efficace...

Si ton but est de juste transformer ce texte :

$texte = /* tout ton texte */;

// on sépare les lignes
$ligne = explode("\n", $texte);

// on parcours chaque ligne
foreach($ligne as $k=>$v) {
    // si c'est un tag HTML, passe !
    $t = trim($v);
    if( $t{0}=='<' or $t{strlen($t)-1}=='>' ) continue;

    // sinon on transforme
    $ligne[$k] = "<li>$v</li>";
}

// et voilà :)
$texte = implode($ligne);

mercredi 23 novembre 2005 à 20:53:59 | Re : REGEX

massacr

Membre Club
Salut
Merci pour ta réponse rapide.
Mais en fait, je n'ai donné qu'une partie du code (je ne pensais pas qu'il fallait l'autre).
Mon texte à transformé est plutot ca :


blablablablablablablablablablablablablablablablablablablablablablablab
lablablablablablablablablablablablablablabla
blablablablablablablablablablablablablablablablablabla
blablablablablablablablablablablav
<table>
LE TABLEAU
</table>
blablablablablablablablablablablablablablabla
blablablablablablablablablablablablablablablabla
blablablablablablablablablablablablablablablablablablablablablablablablablablablabla
blablablablablablablablablablabla
blablablablablablabla
blablablablablablablablablablablabla

Et je dois transformer toutes les listes qui sont entre <ul> et </ul>.
Comment faire pour ne garder qu'elles ?
C'est pour ca que je pensais que j'aurais besoin des regex.
 As tu une solution ?
mercredi 23 novembre 2005 à 21:03:00 | Re : REGEX

J_G

Alors là oui, il te faut utiliser les regexp...

dont je suis pas vraiment maitre...


un truc du genre @<ul>(.*)</ul>@im
Te sortira tout ce qui se trouve entre les balises ul
(im c'est pour "insensible à la casse et multiligne")

au cas où soit spécifiées des attributs dans les ul :
$regle = @<ul [\w\s\"=]* >(.*)</ul>@im

Bon, puis après un
$arr = array();
preg_match_all($texte, $regle, &$arr);

devrait te pondre un tableau tout fou où le résultat attendu est dans :
foreach($arr[1] as $n=>$ul) {
    // dans $ul un contenu d'un <ul></ul>
}

En gros... ça donne ça ! Mais je ne garanti pas le bon fonctionnement de ma règle.

mercredi 23 novembre 2005 à 21:05:12 | Re : REGEX

J_G

il y'a un espace de trop ici :

$regle = @<ul [\w\s\"=]*>(.*)</ul>@im

Ah sa joue très fin les regexp... !

mercredi 23 novembre 2005 à 21:29:45 | Re : REGEX

massacr

Membre Club

Ca ne marche pas.
Le problème est qu'il recherche <ul>nimportequoi</ul> au lieu de nimportequoi entouré de <ul></ul>.
Connais tu la solution ?
mercredi 23 novembre 2005 à 21:35:29 | Re : REGEX

J_G

fait un coup de


str_replace(' ','&nbsp;&nbsp;',nl2br(var_export($arr, true)));


est regarde la composition du tableau de resultat...
le <ul>nimportequoi</ul> est le resultat global

Mais sous d'autre indexe de $arr, tu trouvera ce qu'il y'a à l'intérieur des <ul>



mercredi 23 novembre 2005 à 21:36:08 | Re : REGEX

J_G

echo str_replace(' ','&nbsp;&nbsp;',nl2br(var_export($arr, true)));
mercredi 23 novembre 2005 à 21:42:34 | Re : REGEX

J_G

$regle = @<ul .*>(.*)</ul>@im

ceci devrait suffir...
mercredi 23 novembre 2005 à 21:50:25 | Re : REGEX

J_G

note en passant : connais-tu la balise <th> ?

<tr id="titretableau">
<td>Récit expressif</td>
<td>Positif expressif</td>
<td>Grand orgue</td>
<td>Pédalier</td>
</tr>


C'est justement pour pouvoir donner un style particulier aux entêtes de tableau (th = Table Header).

<tr>
<th>Récit expressif</th>
<th>Positif expressif</th>
<th>Grand orgue</th>
<th>Pédalier</th>
</tr>

puis tu fais un CSS comme ça :

th {
    font-weight:bold;
    /* ... */
}


1 2

Cette discussion est classée dans : cor, rangs, trompette, flute, expressif


Répondre à ce message

Sujets en rapport avec ce message



Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,250 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales