错误类型- 2:preg_replace() [function].preg-replace]:编译失败:缺失)


Error type - 2: preg_replace() [function.preg-replace]: Compilation failed: missing )

我有以下错误:

错误类型- 2:preg_replace() [function.][preg-replace]:编译失败:丢失)在偏移量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;

}

提前感谢您的帮助

无法读取您的表达式,但您错过了一个)() -对定义表达式组。一个(没有相应的)是无效的(这就是错误信息试图告诉你的)。如果你想要一个文字(,你必须转义'(

然而,看看pathinfo(), explode()str_replace()。这不是正则表达式

的场景。
$ext = pathinfo($photo, PATHINFO_EXTENSION);
$photo = basename($photo) . '.' . $name . '.' . $ext;

不知道哪里出了问题;从代码中看不清楚,因为您正在构建一个动态正则表达式。无论如何,这里有一个可供您欣赏的替代方案,它比原始功能包含更多的错误检查。

<?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.