2012-02-22 24 views
2

我想要一個php函數可能正則表達式來查找和替換以常量字符串開頭並以特定字符串和這些字符串中提到的文本結束的字符串..例如,正則表達式來查找和替換字符串中的開始和結束文本在PHP中

[Starting String]..anything.. [Ending String]

和我想刪除的字符串的上面的圖案與空的空間..請告知!!

+0

請舉個例子。 – 2012-02-22 05:40:51

+0

請更好地解釋你想要什麼。 – 2012-02-22 05:45:27

回答

8
$str = preg_replace('/' . preg_quote('[Starting String]') . 
          '.*?' . 
          preg_quote('[Ending String]') . '/', '', $str); 

preg_quote來確保你不會與一些特定打破正則表達式爲你的「開始」和「結束」的字符串,如[]

$str = ' blah blah [Starting String] something [Ending String] blah blah';結果將是blah blah blah blah正則表達式字符

+0

謝謝謝瑞.. – Kamran 2012-02-22 06:42:49

+0

我該如何更換條件。防爆。如果文本是a,則用b替換,如果文本是c,則用d替換。 – dungphanxuan 2017-11-22 03:44:15

+0

@dungphanxuan使用'preg_replace_callback' – Cheery 2017-11-26 22:34:47

1

我相信你想要使用preg_replace。我沒有測試過,但是沿着線的東西:

$str = "Starting String foo bar Ending String" 
$pattern = '/^Starting String(.+)Ending String$/' 
$replacement = '' 
$result = preg_replace($pattern, $replacement, $str); 

你必須確保字符串開始和結束的字符串不包含任何特殊字符的正則表達式或他們正確轉義。

+0

我覺得Cheery的回答可能比我的更正確一點 – jmkelm08 2012-02-22 05:54:07

0
define('STARTING', 'starting string'); 

$ending = 'ending string'; 
$string = 'starting stringSomething Hereending string'; 

function get_anything($string, $ending, &$anything) 
{ 
    if (strpos($string, STARTING) !== 0) 
    { 
     return false; 
    } 
    if (substr($string, strlen($ending) * -1) != $ending) 
    { 
     return false; 
    } 
    $anything = substr($string, strlen(STARTING)); 
    $anything = substr_replace($anything, '', strlen($ending) * -1, -1); 
    return true; 
} 

if (get_anything($string, $ending, $anything)) 
{ 
    echo $anything; 
} 

功能get_anything將返回false如果未找到模式,並true如果發現。中間的「任何東西」將以第三個參數返回。

相關問題