我有以下网址
http://domain.com/baby/smile/love/index.txt
http://domain.com/baby/smile/love/toy.txt
http://domain.com/baby/smile/love/car.html
and so on...
使用preg regex,如何删除右侧的文件名?我想从右边开始需要匹配第一个破折号,我该怎么做?
例如,如果我运行类似
的东西 $newUrl = preg_match('xxxxxx', '', $url);
或使用
$newURL = preg_replace(...);
$ newUrl变量只包含
http://domain.com/baby/smile/love/
在末尾保留尾部斜杠。我能够通过使用explode(),array_pop(),然后使用implode()将它重新组合在一起,只是想知道是否可以只使用正则表达式。
谢谢。
答案 0 :(得分:4)
您可以使用以下内容。
function clean($url) {
$link = substr(strrchr($url, '/'), 1);
return substr($url, 0, - strlen($link));
}
echo clean($url);
请参阅Live demo
使用正则表达式:
$newUrl = preg_replace('~[^/]*$~', '', $url);
请参阅Live demo
答案 1 :(得分:3)
<?php
$str = 'http://domain.com/baby/smile/love/index.txt';
$str = preg_replace('/(.*\/).*/', '$1', $str);
print $str;
输出:
http://domain.com/baby/smile/love/
答案 2 :(得分:1)
这应该有效:
$s = 'http://domain.com/baby/smile/love/index.txt';
if (preg_match_all('~^.+?/(?!.*?/)~', $s, $matches))
print_r ( $matches[0] );
Array
(
[0] => http://domain.com/baby/smile/love/
)