2010-02-07 47 views
3

如何從字符串中去除所有正則表達式特殊字符?PHP:我如何去除所有的正則表達式?

例如:我有「/^bla\/bla\/bla\//i」,我想:「bla/bla/bla/


我想這是不是真的有可能在我想的情況下。感謝您的回覆

+7

您希望如何處理查找問題?那麼像'.'(點)這樣的元字符或者像'[abc]'這樣的字符類怎麼辦?等等請首先定義你想要處理的正則表達式的子集。 – 2010-02-07 10:39:37

+0

這是對這個問題的重述嗎? http://stackoverflow.com/questions/2216494/php-how-do-i-convert-a-regular-expression-to-an-example-match如果是這樣,請關閉其中之一 – 2010-02-07 13:33:41

+0

您希望如何處理括號?如果你有'/^bla \ /(bla)\/bla \ // i',你想要'bla // bla /'還是你只想括號不見了? – Anthony 2010-02-08 04:42:09

回答

0

我不明白你想要做什麼,但如果你只是想從字符串中刪除某些字符,你可能會更好使用strtr()。一方面它會比做正則表達式更快,並且它可能會更具可讀性。

編輯:其實我真的不明白你想達到什麼目的。

+0

OP沒有說他正在嘗試使用正則表達式,而是試圖將表示字符串的正則表達式轉換爲另一個字符串。 – Avi 2010-02-07 13:29:00

+0

是的,我發現後,我意識到。現在我很困惑。 – 2010-02-07 13:31:16

+0

也許最好刪除這個答案呢? – 2010-02-07 13:39:00

0
<?php 
    $string = "/^bla\/bla\/bla\//i"; 
    $patterns = array(
     "/\/\^([\w]+)/i" => "$1/", 
     "/[\/]{2,}i$/i" => "/", 
     "/\\\/" => "", 
     "/[\/]{2,}/" => "/", 
     "/\/$/" => "", 
    ); 
    echo preg_replace(array_keys($patterns),$patterns,$string); 

    //OR, this: 
    echo "\n"; 

    $string = "/^bla\/bla\/bla\//i"; 
    $pattern = "/(?![\/\w]$)([\w]+)/"; 
    preg_match_all($pattern,$string,$matches); 
    echo join('/',$matches[0]); 
?> 
+1

有些人可能不同意分裂像第一個例子那樣將正則表達式分解爲多個邏輯操作,這是一種風格選擇。儘管如此,最好的方法是我會認爲,更好地捕捉你想要的東西,而不是去替換你不想要的東西。 – 2010-02-07 13:40:35

相關問題