我的链接看起来像http://site.com/numbers_and_letters/This_is_what-I-need_to-retrieve.html
我基本上需要检索这部分:This_is_what-I-need_to-retrieve
并且还用空格替换破折号和下划线,以便最终看起来像这样:This is what I need to retrieve
我是regex的新手,所以这就是我正在使用的: (虽然有效,但表现不佳)
function clean($url)
{
$cleaned = preg_replace("/http:\/\/site.com\/.+\//", '', $url);
$cleaned = preg_replace("/[-_]/", ' ', $cleaned);
//remove the html extension
$cleaned = substr($cleaned, 0,-4);
return $cleaned;
}
答案 0 :(得分:1)
你所得到的并不是那么糟糕。但也许您可以尝试将其性能与此进行比较:
preg_match('[^/]+$', $url, $match);
$cleaned = preg_replace('[-_]', ' ', $match);
修改强>
如果你拥有的只是一把锤子,那么一切看起来都像钉子。
如何完全避免正则表达式? (我假设每个输入都是有效的URL。)
$cleaned = strtr(substr($url, strrpos($url, '/') + 1, -5), '-_', ' ');
这甚至删除了.html
扩展名! (我做了你似乎已经做出的所有假设,即。所有链接都以.html
结尾。)简要说明: