2011-11-15 81 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. 
相关问题