如何去除字符串中的斜杠及其之间的数字内容

问题描述 投票:0回答:3

考虑以下字符串:

/0123456789/abcdefg

我需要删除两个斜杠之间的所有数字以及斜杠。我知道

preg_replace
,但从未使用过这个函数(我是 PHP 新手)。我该如何为其创建正确的正则表达式?预先感谢。

php preg-replace strip
3个回答
2
投票

没有

preg_replace()
的最简单方法:-

<?php

$url = "/0123456789/abcdefg";
echo $words = substr($url, strrpos($url, '/') + 1);

https://3v4l.org/IbG7E

注意:- strrpos 获取斜杠最后一次出现的位置; substr 返回该位置之后的所有内容。

strrpos函数从0开始计算给定字符的位置,这就是为什么添加+1来获取可以取出子字符串的实际位置

另一种方法是使用

explode()
end()

https://3v4l.org/7SZ0f


1
投票

试试这个

<?php
$keep = "abcdefg";
$str = "/0123456789/";
echo chop($keep,$str);
?>

chop 函数接受一个字符串并从中删除某个值。 第一个参数

$keep
是您要保留的参数 函数中的第二个参数
$str
是您要删除的参数。 我希望这有帮助


1
投票

OP的问题涉及正则表达式(正则表达式),与preg_replace()一起使用来解决问题。方法如下:

<?php

$url = "/0123456789/abcdefg";

$regex= "~/\d+/~";

$replace = "";

echo preg_replace( $regex, $replace,$url );

参见实时代码。

请注意,正则表达式由一个正斜杠、后跟一个或多个数字以及另一个正斜杠组成。分隔符本身使用字符“~”。相反,如果它们由斜杠组成,那么也只有这样,才需要转义正斜杠。

顺便说一句,您也可以使用 preg_split() 实现所需的输出,如下所示:

<?php

$url = "/0123456789/abcdefg";
list(,, $strData) = preg_split("~/~",$url );
echo $strData;

参见实时代码

在此解决方案中,url 字符串在存在正斜杠时被拆分为一个列表,该列表在捕获字母字符串时忽略无关数据。

更好的解决方案需要使用explode(),以便字符串可以包含更少、更多或相同数量的正斜杠。给定一个以字母字符结尾的字符串,可以按如下方式编码:

   <?php

    $url = "/0123456789/abcdefg";
    $arrData = explode("/", $url );
    $dex = count($arrData) - 1;
    echo $arrData[ $dex ];

参见实时代码

© www.soinside.com 2019 - 2024. All rights reserved.