這是我第一次發帖。
我有一個瀏覽器游戲聊天,人們可以發送這樣的字串:
瓦倫蒂娜與保羅打架。她正在使用[劍]、[盾]和[匕首]。
現在,我想要實作的是檢索方括號內的所有單詞,并為每個單詞創建一個指向顯示專案描述的模式視窗的鏈接。
我擁有的代碼是這個:
function gdrcd_chatcolor3($str) {
$search = [
'#\[(.*?)\]#'
];
$fullString = $chat_message;
$sTest = $str;
preg_match('#\[(.*?)\]#', $sTest, $aMatches);
$artefatto = $aMatches[1];
$caricaoggetto = gdrcd_query("SELECT * FROM oggetto WHERE oggetto.nome='".gdrcd_filter('get', $artefatto)."'");
$urloggetto= "javascript:modalWindow('oggetto', 'Oggetto', 'popup.php?page=popupitem&oggetto=". $caricaoggetto['id_oggetto'] ."', 800, 450);";
$replace = [
'<a href="' . $urloggetto . '"><span style="color: #c21616;">[$1]</span></a>',
];
return preg_replace($search, $replace, $str);
}
什么樣的作品。
我的意思是,它適用于第一項,并且我能夠使用第一項的 id 加載模式視窗。但是第二個,第三個等等,專案,都顯示相同的模態視窗。
我不是程式員。我知道我必須創建一種 cicle 或類似的東西,才能對每個專案進行 $urloggetto 更改。
這樣第一個專案將加載
popup.php?page=popupitem&oggetto=first item id;
第二項將加載
popup.php?page=popupitem&oggetto=scond item id
等等。
有什么幫助嗎?
uj5u.com熱心網友回復:
除了使用 preg_match,您可以使用preg_replace_callback并對$str由$aMatches.
捕獲組 1 的值在 $aMatches[1]
例如:
function gdrcd_chatcolor3($str) {
return preg_replace_callback('#\[([^][]*)\]#', function($aMatches) {
$caricaoggetto = gdrcd_query("SELECT * FROM oggetto WHERE oggetto.nome='".gdrcd_filter('get', $aMatches[1])."'");
$urloggetto= "javascript:modalWindow('oggetto', 'Oggetto', 'popup.php?page=popupitem&oggetto=". $caricaoggetto['id_oggetto'] ."', 800, 450);";
return '<a href="' . $urloggetto . '"><span style="color: #c21616;">'.$aMatches[1].'</span></a>';
}, $str);
}
請注意,您不必使用中間字串和變數,例如
$fullString = $chat_message;
$sTest = $str;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/419622.html
標籤:
下一篇:這兩個在C編程語言中是否相同?
