2010-07-16 5 views
0

J'ai du code HTML qui ressemble à ceci:de chouettes pour analyser regex javascript dans HTML

$(document).ready(function(){ 
     $('#cumulative-returns').graph({ 
      width: 400, 
      height: 180, 
      type: 'bar', 
      x_label: 'Month', 
      x_data: ['Jan','Feb','Mar','Apr'], 
      y_label: 'Cumulative Return', 
      y_data: ['5','10','15','20'], 
      colors: ['666666', '000000', 'ff0000', '333366'] 
     }); 

     $('#new-returns').graph({ 
      width: 400, 
      height: 180, 
      type: 'bar', 
      x_label: 'Month', 
      x_data: ['Jan','Feb','Mar','Apr'], 
      y_label: 'Cumulative Return', 
      y_data: ['5','10','15','20'], 
      colors: ['666666', '000000', 'ff0000', '333366'] 
     }); 
    }); 

Ce que je dois faire est de remplacer x_data et y_data avec de nouvelles valeurs en utilisant une expression rationnelle nifty en PHP.

C'est ce que j'ai trouvé jusqu'à présent juste pour trouver le bon graphique, mais même cela ne fonctionne pas.

$graph = "cumulative-returns"; 
$start_tag = '$(\'#'.$graph.'\').graph({'; 
$end_tag = '});'; 
preg_match_all("/".preg_quote($start_tag)."(.+?)".preg_quote($end_tag)."/i", $html, $matches); 
print_r($matches); 

Toutes les suggestions seraient grandes!

* modifier:

S'il vous plaît ne pas tenir compte du fait que son javascript, je dois juste une regex pour trouver la chaîne entre $('#cumulative-returns').graph({ et }); caractères!

+0

Cest javascript/jquery pas html. – NimChimpsky

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 Peut-être? –

+0

Cela semble être une façon d'obtenir une valeur dans votre Javascript. –

Répondre

1
preg_match('/\$\(\'#cumulative-returns\'\)\.graph\({([^}]*)}\);/s',$input,$matches); 

Après cela, $matches[0] aura les valeurs reconnues par la regex (y compris le texte qui l'entoure) et $matches[1] aura juste le texte entre $('#cumulative-returns').graph({ et }); caractères.

Aussi, peut-être plus utile, serait:

preg_match_all('/\$\(\'#[^\']*\'\)\.graph\({([^}]*)}\);/s',$input,$matches); 

Après quoi matches[0][n] reflète le n-ième match (y compris le texte environnant) et $matches[1][n] reflète la nième occurrence du texte entre $('#[any-text]').graph({ et });

0

créer une variable pour contenir les données de x_data Ensuite, il suffit de manipuler cette variable ...

var myvar = ['dec', 'may', 'whatever', 'whatver' ] 
    $('#cumulative-returns').graph({ 
       width: 400, 
       height: 180, 
       type: 'bar', 
       x_label: 'Month', 
       x_data: myvar, 
       y_label: 'Cumulative Return', 
       y_data: ['5','10','15','20'], 
       colors: ['666666', '000000', 'ff0000', '333366'] 
      }); 
+0

Non s'il vous plaît ignorer le fait que son javascript, je ai juste besoin de regex pour trouver la chaîne entre '$ ('# cumulative-returns'). Graph ({' et '});' caractères! – fire

Questions connexes