我正在尝试编写类似BB-Code函数的东西,它取代了例如。 “[itemThumb type = file itemId = 33]”,带有所选项目的缩略图。
为此我在uniText()中使用preg_replace:
function universeText($str){
$str = preg_replace("#\[itemThumb type=(.*)\ typeId=(.*)\]#", showChatThumb("$1","$2") , $str);
return $str;
}
因为showChatThumb的输出无效,我将showChatThumb()缩减为:
function showChatThumb($itemType, $itemId){
switch($itemType){
case 'file':
$return = "rofl";
break;
case 'folder':
$return = "lol";
break;
case 'link':
$return = "asd";
break;
return $return;
}
但是switch()函数在某种程度上不适用于变量$ itemId。当我在switch函数之前或之后定义$ return时,它会直接传递replace函数。 我读到开关有时候不能正常工作,所以我也试过if,否则如果已经但它也不起作用。
但如果我这样写,那么返回正确的值也会抛出replace函数:
function showChatThumb($itemType, $itemId){
return $itemType;
}
我现在非常无能为力,谢谢你的每一次帮助
答案 0 :(得分:2)
function universeText($str){
echo $str = preg_replace_callback("#\[itemThumb type=(.*)\ itemId=(.*)\]#", 'showChatThumb' , $str);
}
$str = "[itemThumb type=file itemId=33]";
function showChatThumb($param){
switch($param[1]){
case 'file':
$return = "rofl";
break;
case 'folder':
$return = "lol";
break;
case 'link':
$return = "asd";
break;
}
return $return;
}
$tes = universeText($str);
echo "<pre>"; print_r($tes);