我目前正在为我的网站制作BBCode课程。 我需要做以下事情。
function bbCode([skill]Q[/skill]_________[skill]Q[/skill]_________[skill]Q[/skill]);
bbCode函数必须替换[skill]和[/ skill]标记之间的所有Q,并将其替换为$ skillArray [' Q']值。 ($ skillArray依赖于字符。)
我该怎么做?
更清晰的版本是:
聚苯乙烯。不想使用爆炸。
答案 0 :(得分:1)
假设您要替换的标记位于某种形式的模板中,您可以使用file_get_contents,然后使用所需的值循环浏览要替换的标记,例如:
$file = file_get_contents ( 'yourfile.php' );
$skillArray = array ( 'Q' => 'Hunter name' );
foreach ( $skillArray as $key => $val )
{
$file = str_replace ( '[skill]' . $key . '[\skill]', $val, $file );
}
这只是一个完全粗略的例子,但如果我理解你要做的事情;应该沿着正确的方向......
答案 1 :(得分:1)
这就是你需要的
$data = "[skill]Q[/skill]_________[skill]Q[/skill]_________[skill]Q[/skill]";
$r['Q'] = "Yahoo";
function b($a){
global $r;
return $r[$a[1]];
}
$data = preg_replace_callback('|\[skill\](Q)\[\/skill\]|', 'b' , $data);
var_dump($data);
如果您想将所有Q
替换为单个" Yahoo"使用Q+
代替Q
。如果您想匹配所有单词,请使用\w+
。
答案 2 :(得分:1)
<?php
$skillArray=array('Q'=>'fishing');
$txt="test [skill]Q[/skill] test";
$txt=preg_replace("#\[skill\](.*)\[\/skill\]#e",'$skillArray["$1"]',$txt);
echo $txt; //test fishing test
?>