Php 如何去除斑点?
我有以下代码:Php 如何去除斑点?,php,regex,Php,Regex,我有以下代码: $value = 'daryaa-manmarziyan-(VideoStatus.Net).mp4'; $final_value = preg_replace("/[^a-zA-Z0-9_.]/", "", $value); echo $final_value; exit(); 输出为:daryaamanmarziyanVideoStatus.Net.mp4 我想要输出daryaamanmarziyanVideoStatusNet.mp4 所有不必要的点。将删除我能做什么?将
$value = 'daryaa-manmarziyan-(VideoStatus.Net).mp4';
$final_value = preg_replace("/[^a-zA-Z0-9_.]/", "", $value);
echo $final_value; exit();
输出为:daryaamanmarziyanVideoStatus.Net.mp4
我想要输出daryaamanmarziyanVideoStatusNet.mp4
所有不必要的点。将删除我能做什么?将preg\u replace调用更改为:
$final_value = preg_replace(array("/[^a-zA-Z0-9_.]/", "/\.(?=.*\.)/"), "", $value);
第二个替换字符串/\。?=.*./查找一个。然后是另一个。并将其替换为空字符串
示例数据的输出:
daryaamanmarziyanVideoStatusNet.mp4
将preg_replace调用更改为:
$final_value = preg_replace(array("/[^a-zA-Z0-9_.]/", "/\.(?=.*\.)/"), "", $value);
第二个替换字符串/\。?=.*./查找一个。然后是另一个。并将其替换为空字符串
示例数据的输出:
daryaamanmarziyanVideoStatusNet.mp4
使用带有替换项的正则表达式:
preg_replace("/[^\w.]+|\.(?=[^.]*\.)/", "", $value);
^^^^^^^^^^^^^^
请参阅和
\.?=[^.]*\。模式匹配任何。用\。后面跟任何0+字符,而不是。接着是
此外,如果不使用u修饰符,[A-Za-z0-9_u3;]等于\w,因此,可以稍微缩短图案
细节
[^\w.]+-1个或多个字符,而不是单词A-Za-z0-9_uu字符和。
|-或
\-一个点。。。
?=[^.]*\. - 一个正向的向前看,紧跟在当前位置的右边,确保紧跟着圆点
[^.]*-0+字符,而不是。
\-一个点。
使用带有替换项的正则表达式:
preg_replace("/[^\w.]+|\.(?=[^.]*\.)/", "", $value);
^^^^^^^^^^^^^^
请参阅和
\.?=[^.]*\。模式匹配任何。用\。后面跟任何0+字符,而不是。接着是
此外,如果不使用u修饰符,[A-Za-z0-9_u3;]等于\w,因此,可以稍微缩短图案
细节
[^\w.]+-1个或多个字符,而不是单词A-Za-z0-9_uu字符和。
|-或
\-一个点。。。
?=[^.]*\. - 一个正向的向前看,紧跟在当前位置的右边,确保紧跟着圆点
[^.]*-0+字符,而不是。
\-一个点。
你应该使用
$value = 'daryaa-manmarziyan-(VideoStatus.Net).mp4';
$fileNames = preg_replace(array("/[^a-zA-Z0-9_.]/", "/\.(?=.*\.)/"), "", $fileName);
echo $final_value; exit();
产出将会到来
daryaamanmarziyanVideoStatusNet.mp4
你应该使用
$value = 'daryaa-manmarziyan-(VideoStatus.Net).mp4';
$fileNames = preg_replace(array("/[^a-zA-Z0-9_.]/", "/\.(?=.*\.)/"), "", $fileName);
echo $final_value; exit();
产出将会到来
daryaamanmarziyanVideoStatusNet.mp4
在正则表达式中,删除。但这会删除所有的点,mp4之前的那个点包括文件名总是硬编码的吗?或者这只是一个例子,文件名可以是任何东西吗?。首先。。解决办法应该是显而易见的。。第二个更有趣。@Loek文件名将一直不同。。我只是在测试时遇到问题,但需要解决。在您的正则表达式中删除。但这会删除所有的点,mp4之前的那个点包括文件名总是硬编码的吗?或者这只是一个例子,文件名可以是任何东西吗?。首先。。解决办法应该是显而易见的。。第二个更有趣。@Loek文件名将一直不同。。我只是在测试时遇到问题,但需要解决。