2011-11-15 9 views
0

私はエラー以下のいる)行方不明にpreg_replace()[function.preg-置き換える]:編集25をオフセットで)行方不明:/var/www/hosting/com/galerielaboratorio/scripts/functions.phpにライン766エラータイプ - 2:にpreg_replace()[function.preg-置き換える]は:コンパイルに失敗しました:</p> <p>エラータイプ - 2:

にここでの関数である:失敗した

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

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

return $photo; 

}

感謝アドバイスのヘルプnce。

答えて

2

式を読み取ることができませんが、1つをお見逃ししました)() -pairsは式グループを定義します。 1つの(と対応する)が無効です(エラーメッセージがあなたに伝えようとしているもの)。あなたが(リテラルを持っているしたい場合は、それが\(

しかし、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. 
関連する問題