0

大家好,

我有以下内容:

$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-start”替换为“img-start-active”。如果找到 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 " ";
}

不幸的是,我认为我没有正确使用它。最终结果是 - 虽然我在给定条件下得到了所需的字符串替换,但它呼应了整个分页,但没有格式化。

这是图像:在此处输入图像描述

所以这是一团糟。

有没有办法进行这种搜索和替换但不创建第二个“分页”?

回答:

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

消除return $html;

4

2 回答 2

1

什么样的格式丢失了?原始字符串$html也没有格式:) 如果您echo $html;会看到那里也没有格式。如果需要,您可以\n在每行末尾添加换行符(确保也将字符串周围的单引号替换为双引号)。因此,例如,您的第二行将如下所示:

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

编辑(问题更新后):

在这种情况下,可能是因为未设置新类名的 CSS。在您的 css 文件中,如果您创建新类img-start-activeimg-end-active具有相同的内容,img-start并且img-end您不应该丢失任何格式。

于 2012-05-14T22:50:52.050 回答
0
$string = $html;
    if(strstr($string, '<span class="pagenav">Start</span>'))
    {
    return str_replace("img-start", "img-start-active", $string);
    }
    else
    {
    echo " ";
    }

消除return $html;

于 2012-06-22T16:28:13.537 回答