我試圖讓我的客戶端通過在他們的所見即所得編輯器中插入一個簡短代碼來調用具有各種代碼片段的函數。php替換正則表達式而不是字符串替換
例如,他們會喜歡寫東西......
[getSnippet(1)]
這會打電話給我的getSnippet($ id)的PHP函數,輸出相應的 '塊'。
它工作時,我硬編碼的$ id像這樣...
echo str_replace('[getSnippet(1)]',getSnippet(1),$rowPage['sidebar_details']);
可是,我真的想使「1」的動態。我是那種正軌的東西像...
function getSnippet($id) {
if ($id == 1) {
echo "car";
}
}
$string = "This [getSnippet(1)] is a sentence.This is the next one.";
$regex = '#([getSnippet(\w)])#';
$string = preg_replace($regex, '. \1', $string);
//If you want to capture more than just periods, you can do:
echo preg_replace('#(\.|,|\?|!)(\w)#', '\1 \2', $string);
不太工作:(
什麼不適用於您的代碼? – hakre
看看'preg_replace_callback()'。它允許您提供一個函數,該函數接收由正則表達式匹配的字符串的位,並返回替換。 – Barmar