Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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 - Fatal编程技术网

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文件名将一直不同。。我只是在测试时遇到问题,但需要解决。