现在已经很晚了,我不知道下面这个问题的模式(它已经被简化了)。问题在于过程函数。
<?php
function imcrement_image_id( $template ){
return preg_replace_callback('/%image_id%/', 'process', $template );
}
function process( $match ){
static $count = 0;
$count++;
$output = '';
if( $count %2 == 0){
$output = 'image-' . (--$count);
$count++;
} else {
$output = 'image-' . $count;
}
return $output;
}
?>在这个片段中可以看到这些函数的应用。我正在尝试每个循环替换image_id 两次,以便figure id="%image_id"和<a href="%image_id"匹配。
<?php for ($i=0; $i <3 ; $i++): ?>
<?php ob_start(); ?>
<figure id="%image_id%">
<a href="#%image_id%" >
<img src="http://placehold.it/550x209">
<figcaption>Caption</figcaption>
</a>
<p class="description">Quisque facilisis </p>
</figure>
<?php $template .= ob_get_clean(); ?>
<?php endfor; ?>
// later...
echo $template;目前,这段代码确实可以工作,但它生成这样的标记:
<figure id="image-1">
<a href="#image-1">
...
<figure id="image-3">
<a href="#image-3">
...
<figure id="image-3">
<a href="#image-3">我希望它是image-1 image-1, image-2 image-2, image-3 image-3等等。指针总是被欣赏的!
谢谢。
发布于 2013-02-04 11:14:37
尝试:
function process( $match ){
static $count = 1;
$count++;
return 'image-' . floor($count/2);
}逻辑:
$count为2,3,4,5,6.在return语句中$count/2将返回1,1.5,2,2.5,3.floor($count/2)将返回1,1,2,2,3.https://stackoverflow.com/questions/14685355
复制相似问题