Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
帮我学习PHP正则表达式_Php_Regex_Preg Replace_Preg Match - Fatal编程技术网

帮我学习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。。