2011-04-27 122 views
0

我有兩個JavaScript替換命令,它們的工作非常完美。我需要讓他們在PHP中工作。轉換JavaScript替換爲PHP preg_replace或str_replace

var body = body.replace(/\n\n<blockquote>/g, '<blockquote>'); 
var body = body.replace(/<\/blockquote>\n\n/g, '<\/blockquote>'); 

我已經嘗試了很多很多不同的正則表達式可能性和許多str_replace的,但都失敗了。我想會的工作如下,但他們不這樣做:

$body = preg_replace('/\n+<blockquote>/gi', '<blockquote>', $body); 
$body = preg_replace('/</blockquote>\\n+/gi', '</blockquote>', $body); 

$body = str_replace("\n\n<blockquote>", "<blockquote>", $body); 
$body = str_replace("<blockquote>\n\n", "</blockquote>", $body); 

基本上,我只需要去掉兩個新行的圍繞塊引用標記。是的,我已經確認他們是新線路而不是回車。

在此先感謝!

+0

是str_replace工作嗎?他們對我來說看起來很好 – Ibu 2011-04-27 08:33:58

+0

不幸的是,不,他們不是......非常奇怪的行爲......我一直在爲此工作太多時間。換行實際上在另一段代碼中添加了str_replace,但後來在用戶查看後的另一段代碼中,我需要刪除換行符。聽起來很簡單,但不知道爲什麼簡單不工作。 – Mark 2011-04-27 08:43:28

回答

0

我認爲代碼是正確的,問題可能是在標籤之前或之前存在除換行符之外的字符。 \n可能在那裏,但我很確定你也可能有一些空間。

用於調試目的試圖這樣做

  • 更換新線

    $身體= str_replace函數( 「\ n」, '--newline--',$機構);

  • 替換您的空格。

    $ body = str_replace(「」,'--whitespace--',$ body);

  • 回聲身體

    echo $ body;

如果您有任何東西,您現在就會注意到它。 祝你好運:)

+0

添加的新行。當我跑你提供了一些示例文本代碼,在每個字之間顯示--whitespace-- ......,這樣的工作......但 - - 新聞 - 從未顯示。我嘗試將其更改爲\ r並且結果相同......一些如何添加新行並且它們不是\ n或\ r。感謝您的想法,以這種方式檢查換行符......至少它消除了一些可能性。 – Mark 2011-04-27 09:21:17

+0

最後一件事,當新行不'\ N'他們可能是'\ r \ N' – Ibu 2011-04-27 17:59:15

+0

我發現我無法取出新的生產線的原因是事實後,將它們添加編輯器(CKEditor的)。所以,現在我只需要找到一種方法來糾正編輯器的行爲。謝謝您的幫助! – Mark 2011-04-29 11:33:02

1

你錯過了最後調用/

$body = str_replace("</blockquote>\n\n", "</blockquote>", $body); 

用此修復程序,您的str_replace函數的解決方案應該工作。我注意到你在正則表達式中使用了i修飾符。也許你想用str_ireplace來做一個不區分大小寫的替換。

+0

對不起......錯字......代碼中有/。 – Mark 2011-04-27 08:38:22

+0

然後你的代碼正在工作。也許輸入實際上是以某種方式改變的,例如換行符和類似之間有空格? – 2011-04-27 08:42:35

+0

是的,我也想過,但是當我回到javacript時,它完美地工作。文本來自textarea,然後由jquery發送到PHP文件。目前,換行符在轉到php文件之前通過javascript被剝離,但是想要根據客戶端請求在php文件中刪除換行符。 – Mark 2011-04-27 08:48:41