2014-09-01 48 views
0

我有一個WordPress功能,我希望截取的一部分被刪除。 現在的波紋管代碼工作100%只有問題是文本不是靜態的,所以我需要爲它在所有鍋上工作的範圍。REGEX將目標鎖定在兩個單詞之間的所有文本,包括單詞

這是波紋管代碼:

function trim_excerpt($text) 
{ 
    return str_replace('Samurai Swords, Ninja Napkins, Samurai Dishes, Art Plates:,', ' ', $text); 
} 
add_filter('get_the_excerpt', 'trim_excerpt'); 

我試圖讓一個正則表達式來捕獲所有的文字從武士刀開始,直到板:但我不能,因爲我不知道正則表達式。

(唯一標準的話將是武士刀和藝術板,其餘全部可以改變這就是爲什麼我有這個詞範圍武士刀 - >板)

任何幫助可能嗎?

回答

1

您可以使用下面的正則表達式來捕獲從Samurai SwordsArt Plates:的所有文本。 [\S\s]*?匹配零次或多次(非貪婪)的任何空格或非空格字符。

(Samurai\s*Swords[\S\s]*?Art\s*Plates:) 
+0

在開始和結束處指定。*並不是真的必要,是嗎?正如正則表達式應該與它匹配 – pikausp 2014-09-01 22:03:52

+0

另外,OP沒有提到任何關於「非靜態」空白的內容。 (Samura Swords。* Art Plates)會更準確嗎? – pikausp 2014-09-01 22:05:57

+0

謝謝Avinash,它會不會拾起:在「藝術盤」的末尾? @pikausp由於文字是根據產品自動生成的,所以文字可能會和空白一樣變化。 – 2014-09-01 22:06:08

1

此處改爲使用preg_replace()

$text = preg_replace('/Samurai\s*Swords.*?Art\s*Plates:/s', '', $text); 

這將匹配從「Samurai」到「Plates:」的所有內容,並將其替換爲空值。

+0

謝謝,upvoted! – 2014-09-01 23:12:39

相關問題