2009-09-26 50 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