0
這是晚了,我無法弄清楚下面的問題(已被簡化)的模式。問題在於處理功能。有問題的模運算符在preg_replace_callback
<?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
等。指針總是感激!
謝謝。
這裏'%'符號不是模運算符;它只是一個字符串中的一個字符。字符串'%image_id%'被用作字符串替換的佔位符。它可能是任何字符串;它恰好包含百分號。根本沒有模數。 – SDC
@SDC你忽略了這一行:'if($ count%2 == 0)' –
@feb - 恩,你說得對。我想我是由preg_replace_callback中提及的模塊問題引發的,並結合preg_replace_callback和佔位符字符串中的佔位符。 – SDC