帮我学习PHP正则表达式
我想从帮我学习PHP正则表达式,php,regex,preg-replace,preg-match,Php,Regex,Preg Replace,Preg Match,我想从$缩略图中删除\u 8 $thumbnail = "http://d2dsfsd.humbnails/20415/33-d148-45b1-9098-11e5c/thumbnail_8.jpg"; 我一定很清楚 有时$thumbnail可能有\u10或\u100。。那我该怎么办呢?会一直是“\u 8”吗?如果是,请使用: $thumbnail = str_replace("_8.jpg", ".jpg", $thumbnail); 或regex可用于替换任何系列的数字: $thumbn
$缩略图中删除\u 8
$thumbnail = "http://d2dsfsd.humbnails/20415/33-d148-45b1-9098-11e5c/thumbnail_8.jpg";
我一定很清楚
有时$thumbnail
可能有\u10
或\u100
。。那我该怎么办呢?会一直是“\u 8”吗?如果是,请使用:
$thumbnail = str_replace("_8.jpg", ".jpg", $thumbnail);
或regex可用于替换任何系列的数字:
$thumbnail = preg_replace("#_[0-9]+\.jpg$#", ".jpg", $thumbnail);
这相当简单
$thumbnail = preg_replace('/_\d+\.jpg/', '.jpg', $thumbnail);
假设文件名中没有其他下划线,则可以执行以下操作:
$thumbnail = preg_replace('/_\d+/', '', $thumbnail);
相当简单的正则表达式;删除后跟任意位数的下划线
如果您可能有其他下划线后跟数字,并且只希望删除末尾的下划线,那么它会变得更复杂,因为您需要匹配.jpg
,但不删除它。你可以这样做:
$thumbnail = preg_replace('/_\d+\.jpg$/', '.jpg', $thumbnail);
这将删除.jpg
以及下划线和数字,但随后将.jpg
再次放回替换字符串中。注意,我还添加了一个$
将其绑定到字符串的末尾,以确保它与字符串的右侧部分匹配,即使它有其他匹配的匹配项。对于可变整数,可以使用:
$thumbnail = preg_replace( '~_([\d]+)\.jpg$~', ".jpg", $thumbnail );
或者更灵活一点
$thumbnail = preg_replace('#_\d+(?=\.jpg$)#', '', $thumbnail);
(?=\.jpg$)
是一种积极的前瞻,确保在\ud+
之后有.jpg
,然后是字符串的结尾
\d
是一个数字
+
表示一个或多个
$
匹配字符串的结尾是否始终是_8或任何数字_1212121.jpg?我一定很清楚。。有时$thumbnail可能有_10或_100。。那么我该如何处理呢?请看我的编辑-如果它总是一个数字,这将起作用,我必须已经清楚。。有时$thumbnail可能有_10或_100。。