2011-11-15 80 views
0

我具有以下錯誤:錯誤類型 - 2:的preg_replace()[function.preg替換]:編譯失敗:錯過)

錯誤類型 - 2:的preg_replace()[function.preg替換]:編譯失敗:缺少)偏移量25:在/var/www/hosting/com/galerielaboratorio/scripts/functions.php線766

下面是函數:

function getThumbName($photo, $name = 'thumb') { 

$ext = preg_replace ("/.*\./", "", $photo); 
$photo = preg_replace ("/\.". $ext ."$/", "" , $photo). "." . $name . "." .$ext; // this line causes the error 

return $photo; 

}

謝謝在adva幫助NCE。

回答

2

看不懂你的表情,但你錯過了一個)()-對定義表達式組。一個(沒有相應的)只是無效(這就是錯誤消息試圖告訴你什麼)。如果你想有一個文字(你必須逃離這\(

然而,看看pathinfo()explode()str_replace()。這不是正則表達式的場景

$ext = pathinfo($photo, PATHINFO_EXTENSION); 
$photo = basename($photo) . '.' . $name . '.' . $ext; 
0

不確定它出錯的地方;從代碼中不清楚,因爲您正在構建動態正則表達式。無論如何,這是您享受的另一種選擇,它比您的原始功能包含更多的錯誤檢查。

<?php 
function getThumbName($photo, $name = 'thumb') { 
    if($ext = getExtension($photo)) { 
     return basename($photo, $ext) . 'thumb.' . $ext; 
    } 
    return false; 
} 

/** 
* Returns the file extension if it exists, false otherwise. 
* @param string $filename 
* @return string|bool 
*/ 
function getExtension($filename) { 
    return pathinfo($filename, PATHINFO_EXTENSION); 
} 

echo getThumbName('foo.jpg') . PHP_EOL; // foo.thumb.jpg 
echo getThumbName('slightly.more.complex.gif') . PHP_EOL; // slightly.more.complex.thumb.gif 

echo getThumbname('This is where it gets interesting') . PHP_EOL; // false. 
相關問題