2013-05-02 82 views
0

我有一個數據庫轉儲來自Wordpress,它包含帶空格的URL,我需要從中刪除空格。我認爲這會比任務簡單得多。這是相匹配的表達壞HREF的在URL中替換URL中的空格#

(href\="http\:\/\/wfsu.org/blog-coastal-health\/\?page_id\=\d+\/\#)((\w+)\s(\w+))+\" 

問題是試圖取代與破折號空格..

我與$1$3-$4",將其用2個字,但不與任何3工作正常更換+單詞。任何人都有解決方案?

+0

你目前使用2個單詞而不是3+單詞的方法是什麼? – Arman 2013-05-02 20:53:30

+0

你爲什麼不替換白色空間?替換所有的 - s - – Matheus 2013-05-02 20:55:01

+0

Trokka:使用一個稱爲sublime編輯的文本編輯器,但我正在研究使用sed Matheus:該文件是一個6k行的sql文件,如果我替換所有空格,它會破壞很多事情:p – 2013-05-02 20:58:25

回答

0

我會考慮使用preg_replace_callback()。這將允許您使用正則表達式來獲取您感興趣的URL字符串,然後您可以將其傳遞給回調函數,您可以在其中輕鬆使用字符串操作來用短劃線替換空格。

您的代碼可能是這個樣子:

$original_string; // your original string holding your text content 
$pattern = '~href="http://wfsu.org/blog-coastal-health/.*"~i'; 
$cleaned_string = preg_replace_callback(
    $pattern, 
    function ($matches) { 
     return str_replace(' ', '-', $matches[0]); 
    }, 
    $original_string 
); 

這省去了嘗試確定需要多少模式片段的正則表達式本身內更換。相反,您會捕獲整個href屬性值並在其上執行一個簡單的str_replace()