2015-08-28 21 views
0

PHP當然執行雙引號中的字符串變量替換:PHP雙引號串分析器

$test = 'something'; 
echo "This is a $test"; 
//Output: This is a something 

我正在尋找的是PHP的變量替換,但有回調:

function callback($key, &$value) { 
    $value=strtoupper($value); 
} 

$test = 'something'; 
echo some_cool_function('This is a $test', callback); 

//Output: This is a SOMETHING 

(當然這是一個完全任意的例子 - 我不想做一些簡單的操作,只要將值轉換爲大寫就可以)

因此callback將被調用爲ea ch變量(或者可能包含所有變量的數組,如'$test' => 'something')。這樣我可以直接操作PHP,並且可以使用PHP執行的變量和替換值。

我知道類似的東西可以用回調等正則表達式來完成。但是,PHP處理變量如$test[0],複雜語法({ })等可能會複雜起作用的複雜性非常高。

PHP是否以某種方式公開其用於雙引號字符串的內部字符串分析器?

+0

我很困惑,你想要做什麼。你的意思是像一個for語句循環變量?例如:'$ test = ['test1','test2']; foreach($ test as $ val){$ testString =「這是一個$ val」; some_cool_function($ testString); }' – rubes114

+0

雙引號字符串處理本身並不公開。你必須[考慮eval](http://stackoverflow.com/questions/18197348/replacing-variables-in-a-string),或者使用更合理的正則表達式來替換數組和複數變量,或者使用'{ $ ...}'複雜的變量名[或'{...}'標記](http://stackoverflow.com/questions/18197348/replacing-variables-in-a-string)的依賴。 – mario

+0

我已經更新了我的問題,並提供了我正在尋找的更詳細的示例。 – Dan

回答

0

如果我理解正確,您打算some_cool_function將函數callback應用於字符串'This is a $test'

通過使用一個變量會做的伎倆引用的回調函數:

$cb = callback; 
$test = 'something'; 
echo "This is a {$cb($test)}";