我有以下HTML语句
[otsection]Wallpapers[/otsection] WALLPAPERS GO HERE [otsection]Videos[/otsection] VIDEOS GO HERE
我正在尝试用html div替换[otsection]标签。问题是我想从1-> 2-> 3等增加div的id。
因此,例如,以上声明应转换为
<div class="otsection" id="1">Wallpapers</div> WALLPAPERS GO HERE <div class="otsection" id="2">Videos</div> VIDEOS GO HERE
据我研究,最好的方法是通过preg_replace_callback在每次替换之间增加id变量。但是经过1个小时的研究,我无法使其正常工作。
任何帮助,将不胜感激!
使用以下内容:
$out = preg_replace_callback( "(\[otsection\](.*?)\[/otsection\])is", function($m) { static $id = 0; $id++; return "<div class=\"otsection\" id=\"ots".$id."\">".$m[1]."</div>"; }, $in);
特别要注意的是,我使用了一个static变量。该变量在函数调用期间持续存在,这意味着每次调用函数时该变量都会递增,每次匹配都会发生。
static
另外,请注意,我ots是ID的前缀。元素ID不应以数字开头。
ots
对于5.3之前的PHP:
$out = preg_replace_callback( "(\[otsection\](.*?)\[/otsection\])is", create_function('$m',' static $id = 0; $id++; return "<div class=\"otsection\" id=\"ots".$id."\">".$m[1]."</div>"; '), $in);