2013-04-23 34 views
0

我怎样才能在下面的变量,它包含字符串如何划分的字符串在PHP

添加分隔;我有串这样的:

$filename = "a.jpg3c.pngyes.jpg"; 

我想有像

a.jpg;3c.png;yes.jpg 

此字符串在我选择要上载的多个文件时创建。

是正则表达式在这里唯一的解决方案吗?

+4

,你会怎么能够告诉你了那里3名,而不是两个文件是(比方说)“A.JPG。 3c.png“和”yes.jpg“?或其他一些组合? “a.jpg3”,“c.png”,“是”和“.jpg”? – 2013-04-23 21:24:08

+0

......这是这里的许多问题之一...让我粘贴一些代码 – 2013-04-23 21:25:02

+1

因此,您的上传代码将所有文件连接成一个没有分隔符的单个字符串。你是否考虑过,首先不这样做?你可以使用一个简单的3元素数组。 “ – 2013-04-23 21:32:40

回答

3

正则表达式不是唯一的解决方案!也许你可以使用str_replace()而不是正则表达式。

$filenames = "a.jpg3c.pngyes.jpg"; 

$img_extensions = array(".png", ".jpg", ".gif"); 
$semicolon_additions = array(".png;", ".jpg;", ".gif;"); 

$newfilenames = str_replace($img_extensions, $semicolon_additions, $filenames); 

http://php.net/manual/en/function.str-replace.php

编辑:你的具体情况,我会在分号的文件名后,你的循环内添加。

+0

很好的答案!我可以在几分钟内接受 – 2013-04-23 21:32:37

+0

这是迄今为止最好的解决方案。 Str替换>正则表达式 – Tristan 2013-04-23 21:33:44

1

下面是使用正则表达式一个选项:

$filename = "a.jpg3c.pngyes.jpg"; 
$regex = '/\.(jpg|png|gif)(?!$)/'; 
$filename = preg_replace($regex, ".$1;", $filename);