2013-04-23 32 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);