2013-05-02 85 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()