2009-09-26 51 views
0

我有一个令人困惑的问题。javascript摊牌,markdown不能正确解析

我有两个文件,都运行摊牌。但是,似乎只有一个文件解析正确。

这是交易。

File 1通过PHP和AJAX运行。

File 2通过AJAX请求抓取。处理ajax请求的文件包含此代码。

这里是ajax

正如你所看到的,是把细节到屏幕上的jQuery代码是完全一样的除了变量和JSON字符串,而不是从数据库中直接字符串。

现在文件#1不解析正确的降价,在文件中的两个不...

下面是文件#1和#2

文件#1

截图

file one not working http://i34.tinypic.com/x3cmpv.png

文件#2

file two working http://i36.tinypic.com/2py14l5.png

有什么想法可能会导致这种情况?此外,任何想法修复?

回答

0

好吧,

所以,现在看来,这是文件中的换行符的解析......然而,我们从
,因为这改变了它是导致降价解析错误翻番逃脱的问题

所以它现在读取

$copy = preg_replace("/\n/", "\\\\n", $js_r->copy); 
$copy = preg_replace("/\r/", "\\\\r", $copy); 

其正常工作,并解析这两个文件有效

+1

中遇到的问题一样,很高兴它运行良好。顺便说一下,你可能想考虑使用str_replace而不是preg_replace,因为它更快(非正则表达式)。 – 2009-09-27 21:16:07

+0

我发布后,我采取了你的意见......我都是为了节省资源......感谢指出我在正确的方向! – 2009-09-27 23:43:16

1

也许是因为在文件2您有:

$copy = preg_replace('^(.*)\n(.*)^', '$1<br />$2', $result['copy']); 
    $copy = preg_replace('/[\r]+/', '$1<br />$2', $result['copy']); 

而忽略第一的preg_replace()。你想:

$copy = preg_replace('^(.*)\n(.*)^', '$1<br />$2', $result['copy']); 
    $copy = preg_replace('/[\r]+/', '$1<br />$2', $copy); 

,你必须在文件1.正确地实现这可能意味着该文件1的行为是正确的,文件2的行为实际上是不正确,这取决于你看待它的方式。

编辑

为了回答您的评论:

替换(文件1):

$copy = preg_replace('^(.*)\n(.*)^', '$1<br />$2', $js_r->copy); 
    $copy = preg_replace('/[\r]+/', '$1<br />$2', $copy); 

随着

$copy = preg_replace('/[\r]+/', '$1<br />$2', $js_r->copy); 

这是否达到预期的效果?

+0

确定,但如果我改变了文件1(这是不工作的那个),那么我将不会在任何一个获得所需的效果? – 2009-09-26 20:05:18

+0

然后在文件1中做相反的处理,替换$ copy = preg_replace('^(。*)\ n(。*)^','$ 1
$ 2',$ js_r-> copy); $ copy = preg_replace('/ [\ r] + /','$ 1
$ 2',$ copy);与 $ copy = preg_replace('/ [\ r] + /','$ 1
$ 2',$ js_r-> copy); 我很抱歉在评论中缺少代码格式。 – 2009-09-26 20:10:59

+0

它可以工作,但后来在另一个问题,我原来我们得出的结论\ n的解析是必需的,否则它会打破我的JavaScript,我有。我现在离开办公室,所以当我回来时我会尝试并让你知道。 – 2009-09-26 21:36:45