我有一个来自 Wordpress 的数据库转储,其中包含带有空格的 url,我需要从中删除空格。我认为这将是一项简单得多的任务。这是匹配坏href的表达式
(href\="http\:\/\/wfsu.org/blog-coastal-health\/\?page_id\=\d+\/\#)((\w+)\s(\w+))+\"
问题是试图用破折号替换空格..
我正在替换$1$3-$4"
which 适用于 2 个单词但不适用于 3 个以上单词的任何内容。任何人有任何解决方案?
我会考虑使用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()
对其进行简单处理。