也许这只是一个愚蠢的问题,但我有点卡在这上面:(
我想在一段时间内对字符串进行多次更改。但是如果它再次启动循环就会重置。
这是我的代码(为了更好地理解而简化):
$string = '<a href="1"></a>_<a href="2"></a>_<a href="3"></a>';
$offset = 0;
$i = 1;
while($i<=3){
$start = strpos($string, '<a href="', $offset);
$end = strpos($string, '</a>', $offset)+4;
$sub_string = substr($string,$start,($end-$start));
$new_string = str_replace($sub_string,'<a data-filter=""></a>',$string);
echo $i.".: ".htmlentities($new_string)."<br>";
$offset = $end;
$i++;
}
循环中的回显出以下内容:
1.: <a data-filter=""></a>_<a href="2"></a>_<a href="3"></a>
2.: <a href="1"></a>_<a data-filter=""></a>_<a href="3"></a>
3.: <a href="1"></a>_<a href="2"></a>_<a data-filter=""></a>
我的问题是我希望字符串不被重置(我认为这会发生在while循环之外声明的字符串吗?)
最终结果应为:
<a data-filter=""></a><a data-filter=""></a><a data-filter=""></a>
如果我在while循环后回显字符串,则只有最后一个循环的更改才会生效。所以我希望逐步替换字符串。
提前感谢您的时间和答案:)
答案 0 :(得分:0)
你的$ string变量未在循环中使用(未设置),你设置和回显的是$ new_string。根据您的预期输出,您可能希望使用以下内容:
$string = $new_string or
$string .= $new_string or
$string[] = $new_string (for this you would have to declare your $string as array).
无论如何,你没有将循环中的任何进展分配给你的字符串变量,这就是你的问题。