Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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,这方面有很多话题,但我想不出来,寻找一些技巧,应该不会那么难 我有文件名: test_file_from_mpc.mp4_snapshot_13.29_[2015.05.13_21.10.11].jpg 我试图用正则表达式替换字符,然后从快照开始替换所有内容 我得到了一张快照,但我似乎不知道如何捕捉所有被选中的事件 (_)(snapshot)(.*) 仅选择1_ 我读过。应该选择“任何单个字符”,但不确定如何正确使用它,或者它是否是我正在寻找的 任何指导都会很好!(这可能是100%的重复,但

这方面有很多话题,但我想不出来,寻找一些技巧,应该不会那么难

我有文件名:

test_file_from_mpc.mp4_snapshot_13.29_[2015.05.13_21.10.11].jpg
我试图用正则表达式替换字符,然后从快照开始替换所有内容

我得到了一张快照,但我似乎不知道如何捕捉所有被选中的事件

(_)(snapshot)(.*)
仅选择1_

我读过。应该选择“任何单个字符”,但不确定如何正确使用它,或者它是否是我正在寻找的

任何指导都会很好!(这可能是100%的重复,但我检查了所有建议的线程,但没有找到这个看似简单的问题的解决方案!)

您可以尝试此操作。替换为
空格
。请参阅演示


现在还不能评论,但是要让正则表达式匹配多个引用,需要使用g-global修饰符

/(_snapshot.*$|_|\.)/gi

如果纯粹用空格替换所有匹配的事件,请记住修剪最后一个空格

这里还有一个php示例

<?php
$str = "test_file_from_mpc.mp4_snapshot_13.29_[2015.05.13_21.10.11].jpg";
$res = preg_replace(array("/_snapshot.*$/", "/[_.]/"), array("", " "), $str);
print $res; // test file from mpc mp4
另一种(可能更快,但不是更漂亮)方法是使用explode()&intlode()


预期的输出是什么?我不好,预期的输出是:来自mpc MP4的测试文件有趣,删除点的方法?非常好,关闭正则表达式后的开关对我来说是新的,是的,我是一个新手,没有看到这个选项,谢谢,我将尝试以一种有效的方式实现它:)嗯,这不会转化为我希望在生产中返回的内容`返回preg_replace(数组('/snapshot.*$_/img','','','',获取_image_值('image_filename');`返回空值,preg\u replace对此正则表达式不正确?我正在尝试修改此原始php代码:
preg\u replace(数组('/\.jpg$/i','/\u/','/-/')、数组('',''),获取图像值('image\u filename')我试着这样做:
返回preg\u replace(数组('/\u snapshot.$\u |.\./gi','/\u snapshot.$\u | \./gi','/\u snapshot.$\u |../gi'),数组('',''),获取图像值('image\u文件名')如果第一个正则表达式达到我的预期效果,我将不需要数组,原始代码将删除jpeg和其他内容。@karnehe您可以使用
返回preg\u replace(数组('/snapshot.*$/i','/[.\u]/')、数组('',''),获取图像值('image\u filename')
/(_snapshot.*$|_|\.)/gi
<?php
$str = "test_file_from_mpc.mp4_snapshot_13.29_[2015.05.13_21.10.11].jpg";
$res = preg_replace(array("/_snapshot.*$/", "/[_.]/"), array("", " "), $str);
print $res; // test file from mpc mp4
// Split string by underscores
$pieces = explode('_', $filename);

// Get the number of pieces
$n = count($pieces);

// Keep just the file extension in the last piece
$pieces[$n] = substr($pieces[$n], strpos($pieces[$n], '.'));

// Remove the other unwanted pieces
unset($pieces[$n - 1];
unset($pieces[$n - 2];

// Reassemble with spaces instead of underscores
$new_string = implode(' ', $pieces);