php 怎么用正则删除目录后面的斜杠:“/”?

在进行目录管理时,提交后,网址中的目录最后面会多出/web/new/目录名每提交一次会多一个出来web/new/images//web/new/images///web/... 在进行目录管理时,提交后,网址中的目录最后面会多出/

web/new/目录名

每提交一次会多一个出来
web/new/images//
web/new/images///
web/new/images//////

目录名有不同,如:
web/new/class///
web/new/class////////
web/new/class/

怎么用正则把多出来的过滤掉?
只保留:
web/new/images

web/new/class
展开
 我来答
阳光上的桥
推荐于2016-05-27 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部

使用正则表达式删除字符串中的内容的PHP函数是preg_replace,删除目录字符串末尾的/的例子代码如下:

<?php
$u='dsdfg/sdfg/lfjg/';
$u=preg_replace('#/$#','',$u);
echo $u;
?>


代码中正则表达式是/$,使用#作为定界符,/就是要删除的字符,$表示末尾。

本逸春vL
推荐于2016-05-28 · TA获得超过1567个赞
知道小有建树答主
回答量:812
采纳率:0%
帮助的人:654万
展开全部
表达式:
(.*?)(?:\/(?!\w)|$)

主要是零宽断言的运用:
\/(?!\w) 匹配后面不是 / 的字符

测试代码:

<?php

$str = array(
'web/new/images',
'web/new/images/',
'web/new/images/////',
'web/new/images//xxx//xxx////', // 这样的路径,使用 preg_match 和 preg_replace 会有点细微差别
);

foreach ($str as $s)
{

// 使用 preg_match 的用法
preg_match('/(.*?)(?:\/(?!\w)|$)/', $s, $matche);
echo "preg_match: {$s} => {$matche[1]}\r\n";

//使用 preg_replace 的方法
$ns = preg_replace('/(.*?)(?:\/(?!\w)|$)/', '$1', $s);
echo "preg_replace: {$s} => {$ns}\r\n";

}

?>

参考资料: http://deerchao.net/tutorials/regex/regex.htm

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
截趾適履a7
2011-09-29
知道答主
回答量:53
采纳率:0%
帮助的人:31.8万
展开全部
哥们,用 explode(“/”,目录名),然后在用“/”把值不为空的数组元素连起来!这个我测试过了。。。。。。。。。是不是没有效率??等高人.........

用 substr() 从后面截取,截到是字母的地方。。。。。正在测试,这是个思路
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
街头蜘蛛
2011-09-29 · TA获得超过318个赞
知道答主
回答量:174
采纳率:100%
帮助的人:43.3万
展开全部
<?php echo str_replace(array("//","///","////","/////","//////","////////","/////////"), array("/","/","/","/","/","/","/"),$row_xx['xxx']); ?>
追问
你那个最后还是会有一个斜框的

而且这个方法不现实,随着提交次数的增多,不知最后会增加出多少个/来

preg_match("/能不能用这样的正则过滤/",web/new/images//////,$matches);

echo $matches[0];

得出web/new/images
最后面不带斜杠的
不知道正则怎么写?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
计名pS
2011-09-29 · TA获得超过3649个赞
知道大有可为答主
回答量:4189
采纳率:0%
帮助的人:2198万
展开全部
preg_replace("/(images?|class)(\/)\2{1,}/", "$1", $str) ;
更多追问追答
追问
web/new/images

这些目录名不固定,不管是什么,主要要去掉最后面的斜杠,不管多少斜杠

$file="web/new/images//////";

也可能是
$file="a/b/c//////";

$file="h/d/r//////";



preg_match("/XXXXXXXXXX/",$file,$matches);

echo $matches[0];
追答
preg_replace("/\b(\/)\1{0,}$/", '', $str) ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式