我有一些看起来像这样的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']
});
});
我需要做的是使用PHP中的一些漂亮的正则表达式将x_data
和y_data
替换为新值。
到目前为止,这是我想出的正确图表,但即使这样也行不通。
$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);
任何建议都会很棒!
*编辑:
请忽略其javascript这一事实,我只需要一些正则表达式来查找$('#cumulative-returns').graph({
和});
字符之间的字符串!
答案 0 :(得分:1)
preg_match('/\$\(\'#cumulative-returns\'\)\.graph\({([^}]*)}\);/s',$input,$matches);
在此之后,$matches[0]
将使正则表达式匹配的值(包括周围文本)和$matches[1]
之间只有文本
$('#cumulative-returns').graph({
和});
个字符。
另外,可能更有用的是:
preg_match_all('/\$\(\'#[^\']*\'\)\.graph\({([^}]*)}\);/s',$input,$matches);
之后matches[0][n]
反映了第n个匹配项(包括周围文本),$matches[1][n]
反映了$('#[any-text]').graph({
和});
答案 1 :(得分:0)
创建一个变量来保存x_data数据 然后只是操纵那个变量......
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']
});