php
  • javascript
  • html
  • pagination
  • 2012-05-14 5 views 0 likes 
    0

    H каждого,Условный str_replace для пагинацией

    я следующее:

    $html = '<ul class="pagination-all">'; 
        $html .= '<li class="pagination-start"><div class="img-start"></div>'.$list['start']['data'].'</li>'; 
        $html .= '<li class="pagination-prev"><div class="img-prev"></div>'.$list['previous']['data'].'</li>'; 
        $html .= '<ul class="pagination-data">'; 
        foreach($list['pages'] as $page) { 
         $html .= '<li>'.$page['data'].'</li>'; 
        } 
        $html .= '</ul>'; 
        $html .= '<li class="pagination-next">'. $list['next']['data'].'<div class="img-next"></div></li>'; 
        $html .= '<li class="pagination-end">'. $list['end']['data'].'<div class="img-end"></div></li>'; 
        $html .= '</ul>'; 
    
        return $html; 
    

    мне было интересно, как это сделать так, если он находит Start, строка заменяет "IMG-старт" в «img- старт-активный». Если он находит span class = "pagenav"> End, строка заменяет «img-end» на «img-end-active».

    Я попытался:

    $string = $html; 
    if(strstr($string, '<span class="pagenav"> Start </span>')) 
    { 
    echo str_replace("img-start", "img-start-active", $string); 
    } 
    else 
    { 
    echo " "; 
    } 
    

    К сожалению, я не считаю, что я использовал это правильно. В итоге оказалось, что, когда я получил нужную замену строки при условии, это отразилось на всей разбивке на страницы, но без форматирования.

    Это изображение: enter image description here

    Так что это был беспорядок.

    Есть ли способ для этого поиска и замены, но без создания второй «разбивки на страницы»?

    Ответ:

    $string = $html; 
         if(strstr($string, '<span class="pagenav">Start</span>')) 
         { 
         return str_replace("img-start", "img-start-active", $string); 
         } 
         else 
         { 
         echo " "; 
         } 
    

    Удалить return $html;

    ответ

    0
    $string = $html; 
        if(strstr($string, '<span class="pagenav">Start</span>')) 
        { 
        return str_replace("img-start", "img-start-active", $string); 
        } 
        else 
        { 
        echo " "; 
        } 
    

    Удалить return $html;

    1

    Какой форматирование было потеряно? Исходная строка $html не имеет форматирования :) Если вы echo $html;, вы увидите, что там нет форматирования. Если вы хотите, вы можете добавить \n в конец каждой строки, где требуется новая строка (обязательно замените одиночные кавычки, окружающие строки, двойными кавычками). Так, к примеру, ваша вторая строка будет выглядеть примерно так:

    $html .= '<li class="pagination-start"><div class="img-start"></div>'.$list['start']['data']."</li>\n"; 
    

    EDIT (после того, как вопрос был обновлен):

    В этом случае, это, вероятно, потому, что CSS для нового имени класса не задавать. В вашем файле css, если вы создаете новые классы для img-start-active и img-end-active с тем же содержимым, что и img-start, и img-end, вы не должны терять форматирования.

    +0

    HI Ансари, спасибо, что нашли время, чтобы посмотреть его. Я полагаю, что «форматирование» - неправильный термин. Это дало мне второй набор исходной строки $ html. Мне было интересно, что я делаю неправильно, чтобы повторить это дважды, а не однажды, как раньше. – Nina

    +0

    Я действительно не понимаю - это помогло бы, если бы вы дали текущий вывод и ожидаемый результат. – Ansari

    +0

    Ах! Спасибо - когда вы сказали «текущий выход», я понял, что я его не назвал правильно! Спасибо огромное! – Nina

    Смежные вопросы