如何去除圆点?

时间:2018-08-24 12:53:40

标签: 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

所有不必要的点(。)将删除我该怎么办?

3 个答案:

答案 0 :(得分:3)

将您的preg_replace呼叫更改为此:

$final_value = preg_replace(array("/[^a-zA-Z0-9_.]/", "/\.(?=.*\.)/"), "", $value);

第二个替换字符串(/\.(?=.*\.)/)查找.,后跟另一个.,并将其替换为空字符串。

输出示例数据:

daryaamanmarziyanVideoStatusNet.mp4

答案 1 :(得分:1)

您必须使用

$value = 'daryaa-manmarziyan-(VideoStatus.Net).mp4';
$fileNames = preg_replace(array("/[^a-zA-Z0-9_.]/", "/\.(?=.*\.)/"), "", $fileName);
echo $final_value; exit();

输出将

daryaamanmarziyanVideoStatusNet.mp4

答案 2 :(得分:0)

使用交替的正则表达式:

preg_replace("/[^\w.]+|\.(?=[^.]*\.)/", "", $value);
                      ^^^^^^^^^^^^^^  

请参见PHP demo onlineonline regex demo

\.(?=[^.]*\.)模式将任何.\.匹配,后跟除.之外的任何0+字符,再跟.

此外,如果您不使用[A-Za-z0-9_]修饰符,则\w等于u,因此,可以稍微缩短模式。

详细信息

  • [^\w.]+-除单词(A-Za-z0-9_)和.以外的1个或更多字符
  • |-或
  • \.-点...
  • (?=[^.]*\.)-(正向前瞻,它紧靠当前位置的右边,确保该点是)。
    • [^.]*-除.以外的0多个字符
    • \.-点。