Уже поздно, и я не могу понять шаблон для проблемы ниже (что было упрощено). Проблема связана с функцией процесса.Проблемный оператор modulo в 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 - meh, you'r right. Наверное, я был задан заголовком вопроса о модуле в preg_replace_callback в сочетании с заполнителем в preg_replace_callback и строкой-заполнителем. – SDC