考虑以下字符串:
/0123456789/abcdefg
我需要删除两个斜杠之间的所有数字以及斜杠。我知道
preg_replace
,但从未使用过这个函数(我是 PHP 新手)。我该如何为其创建正确的正则表达式?预先感谢。
试试这个
<?php
$keep = "abcdefg";
$str = "/0123456789/";
echo chop($keep,$str);
?>
chop 函数接受一个字符串并从中删除某个值。 第一个参数
$keep
是您要保留的参数
函数中的第二个参数 $str
是您要删除的参数。
我希望这有帮助
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 ];
参见实时代码