2015-02-10 83 views
2

有沒有什麼辦法可以用比下面的代碼更有效的方式替換一個值並在相同的字符串中檢索另一個值,例如,合併preg_replace()preg_match()的方法?替換和檢索佔位符值

$string = 'abc123'; 
$variable = '123'; 
$newString = preg_replace("/(abc)($variable)/",'$1$2xyz', $string); 
preg_match("/(abc)($variable)/", $string, $matches); 
$number = $matches[2]; 
+1

嘗試['preg_replace_callback()'](http://php.net/manual/en/function.preg-replace-callback.php)。 – axiac 2015-02-10 10:50:46

回答

0

您可以使用一個調用preg_replace_callback()並在回調函數的代碼更新$number值:

$string = 'abc123'; 
$variable = '123'; 

$number = NULL; 
$newString = preg_replace_callback(
    "/(abc)($variable)/", 
    function ($matches) use (& $number) { 
     $number = $matches[2]; 
     return $matches[1].$matches[2].'xyz'; 
    }, 
    $string 
); 

我不認爲這是一個很大的速度提升。唯一的好處是可讀性。

+0

它可能不會更快,但看起來更好。 :) – linurb 2015-02-10 11:18:23