IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

regex php -> javascript


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 720
    Points : 744
    Points
    744
    Par défaut regex php -> javascript
    bonjour, j'ai cette fonction en php que j'aimerais programmer en javascript pour une prévisualisation d'un message de forum :

    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
    32
    function code($texte, $mp3_file){
    	//Smileys
     
    	//gras
    	$texte = preg_replace('`\[g\](.+)\[/g\]`isU', '<strong>$1</strong>', $texte); 
    	//italique
    	$texte = preg_replace('`\[i\](.+)\[/i\]`isU', '<em>$1</em>', $texte);
    	//souligné
    	$texte = preg_replace('`\[s\](.+)\[/s\]`isU', '<u>$1</u>', $texte);
    	//lien
    	$texte = preg_replace('`\[img\]http:(.+)\[/img\]`isU', '<img src="$1"/>', $texte);
     
    	$texte = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0" target="_blank">$0</a>', $texte);
     
    	//$texte = preg_replace('#\[quote\](.+)\[/quote\]#isU', '<div class="quote"><p><strong>Citation : </strong></p>$1</div>', $texte);
    	$texte = replace_quotes($texte);
     
    	$texte = preg_replace('#\[size=([0-9]{1,2})](.*?)\[/size\]#s', '<font style="font-size: $1px;">$2</font>', $texte);
     
    	$texte = str_replace(':D:', '<img src="http://'.$_SERVER['HTTP_HOST'].'/forum/images/smileys/happy.png" title="heureux" alt="heureux" />', $texte);
    	$texte = str_replace(':lol: ', '<img src="http://'.$_SERVER['HTTP_HOST'].'/forum/images/smileys/lol.png" title="lol" alt="lol" />', $texte);
    	$texte = str_replace(':sad:', '<img src="http://'.$_SERVER['HTTP_HOST'].'/forum/images/smileys/sad.png" title="triste" alt="triste" />', $texte);
    	$texte = str_replace(':cool:', '<img src="http://'.$_SERVER['HTTP_HOST'].'/forum/images/smileys/cool.png" title="cool" alt="cool" />', $texte);
    	$texte = str_replace(':inlove:', '<img src="http://'.$_SERVER['HTTP_HOST'].'/forum/images/smileys/inlove.png" title="in love" alt="in love" />', $texte);
    	$texte = str_replace(':angry:', '<img src="http://'.$_SERVER['HTTP_HOST'].'/forum/images/smileys/angry.png" title="angry" alt="angry" />', $texte);
     
    	if($mp3_file != ""){
    		$texte = str_replace(':mp3:', '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'.MP3_PLAYER_WIDTH.'" height="'.MP3_PLAYER_HEIGHT.'"><param name="movie" value="../swf/mp3_player2.swf"><param name="quality" value="high"><param name="flashvars" value="mp3=../swf/mp3/'.$mp3_file.'"><embed src="../swf/mp3_player2.swf" flashvars="mp3=../swf/mp3/'.$mp3_file.'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'.MP3_PLAYER_WIDTH.'" height="'.MP3_PLAYER_HEIGHT.'"></embed></object>', $texte);
    	}
    	//On retourne la variable texte
    	return $texte;
    }
    La syntaxe regex est elle la même en javascript qu'en php ?

    Merci

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Pas la même syntaxe mais pas plus compliqué.
    thode : String.replace(motif, remplacement);
    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
    function code(texte,mp3_file){
    	// Gras
    	texte = texte.replace(/\[g\](.+?)\[\/g\]/ig, '<strong>$1<\/strong>');
     
    	// Italique
    	texte = texte.replace(/\[i\](.+?)\[\/i\]/ig, '<em>$1<\/em>');
     
    	// Souligné
    	texte = texte.replace(/\[s\](.+?)\[\/s\]/ig, '<u>$1<\/u>');
     
    	// Image
    	texte = texte.replace(/\[img\](.+?)\[\/img\]/ig, '<img src="$1" \/>');
     
    	// etc...
     
    	return texte;
    }
    Tu ne devrais pas avoir de mal à completer la fonction.

  3. #3
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 720
    Points : 744
    Points
    744
    Par défaut
    Merci à toi,

    Je vais programmer cette fonction et je reviendrai éventuellement sur le topic

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Juste quelque détails au niveau des échappements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    texte = texte.replace(/\[g](.*)\[\/g]/ig/, '<strong>$1<\/strong>');
     
    texte = texte.replace(/\[i](.*)\[\/i]/ig, '<em>$1<\/em>');[
     
    texte = texte.replace(/\[s](.*)\[\/s]/ig, '<s>$1<\/s>');
     
    texte = texte.replace(/\[u](.*)\[\/u]/ig, '<u>$1<\/u>');
     
    texte = texte.replace(/\[img](.*)\[\/img]/ig, '<img src="$1" \/>');
    le premier [ étant échappé le second est interprété comme littéral
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 720
    Points : 744
    Points
    744
    Par défaut
    Bonjour, merci encore ça marche, à présent j'aimerai adapter la balise .

    Voici le code en php qui fonctionne si ces balises sont imbriquées (untel cite untel qui avait cité untel, etc...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function replace_quotes_callback($matches) {
        $cite = empty($matches[1]) ? '<p><strong>Citation : </strong></p>' : '<p><strong>' . $matches[1] . '</strong> a écrit :</p>';
        return '<div class="quote">' . $cite . '<p>' . replace_quotes($matches[2]) . '</p></div>';
    }
     
    function replace_quotes($data) {
        return preg_replace_callback('~\[quote(?:=([^\]]+))?\]((?:(?R)|.)*?)\[/quote\]~s', 'replace_quotes_callback', $data);
    }
     
    function code($texte){
          $texte = replace_quotes($texte);
          return $texte;
    }
    Comment l'adapter en javascript stp ?

  6. #6
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 720
    Points : 744
    Points
    744
    Par défaut
    Merci Spacefrog.

    en fait je suis entrain de chercher un équivalent de preg_replace_callback en javascript.

  7. #7
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 720
    Points : 744
    Points
    744
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function replace_quotes(data) {
    return data.replace('~\[quote(?:=([^\]]+))?\]((?:(?R)|.)*?)\[/quote\]~s',
    function replace_quotes_callback(matches) {
        cite = empty(matches[1]) ? '<p><strong>Citation : </strong></p>' : '<p><strong>' . matches[1] . '</strong> a écrit :</p>';
        return '<div class="quote">' . cite . '<p>' . replace_quotes(matches[2]) . '</p></div>';
    });
    }
     
    function code(texte){
          texte = replace_quotes(texte);
          return texte;
    }
    Pourriez-vous svp me remplacer le regex php en regex javascript ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    pourquoi un callback ?
    tu peux le faire en direct avec les groupes de capture ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 720
    Points : 744
    Points
    744
    Par défaut compter les mots
    Un truc dans ce style ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var myString = "something format_abc";
    var myRegexp = /(?:^|\s)format_(.*?)(?:\s|$)/g;
    var match = myRegexp.exec(myString);
    alert(match[1]);  // abc
     
    And if there are multiple matches you can iterate over them:
     
    while (match != null) {
        match = myregexp.exec(myString);
     
        // matched text: match[0]
        // match start: match.index
        // capturing group n: match[n]
    }

Discussions similaires

  1. [RegEx] php et javascript dans une regex
    Par grochenel dans le forum Langage
    Réponses: 7
    Dernier message: 06/12/2005, 22h21
  2. [PHP-JS] Javascript et PHP: passer une valeur en paramètres
    Par anutka dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/10/2005, 12h05
  3. Recuperer un tableau php dans javascript
    Par 17mounir dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2005, 09h07
  4. [PHP-JS] passage de variable php a javascript
    Par limpins dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/07/2005, 11h54
  5. [PHP-JS] Mettre du php dans javascript
    Par fisico dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/11/2004, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo