遅くなりましたが、以下の問題 (単純化されています) のパターンがわかりません。問題はプロセス関数にあります。
<?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を 2 回置き換えようとしているので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
です。ポインタは常に高く評価されています!
ありがとうございました。