首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >preg_replace内部循环不工作

preg_replace内部循环不工作
EN

Stack Overflow用户
提问于 2017-02-19 12:35:57
回答 1查看 187关注 0票数 0

我正在解析一个RSS提要,我试图删除其中一个条目的一个特定部分,这样就不会显示它。

代码语言:javascript
复制
<pre>M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q1.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q10.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q11.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q12.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q13.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q14.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q15.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q2.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q3.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q4.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q5.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q6.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q7.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q8.htm M /WITHHELD/WITHHELD/dist/gameserver/data/html-en/quests/_419_GetaPet/419_q9.htm M /WITHHELD/WITHHELD/dist/gameserver/data/scripts/quests/_128_PailakaSongofIceandFire.java M /WITHHELD/WITHHELD/dist/gameserver/data/scripts/quests/_129_PailakaDevilsLegacy.java M /WITHHELD/WITHHELD/dist/gameserver/data/scripts/quests/_144_PailakaInjuredDragon.java M /WITHHELD/WITHHELD/dist/gameserver/data/scripts/quests/_311_ExpulsionOfEvilSpirits.java M /WITHHELD/WITHHELD/dist/gameserver/data/scripts/quests/_312_TakeAdvantageOfTheCrisis.java M /WITHHELD/WITHHELD/dist/gameserver/data/scripts/quests/_642_APowerfulPrimevalCreature.java M /WITHHELD/WITHHELD/dist/gameserver/data/scripts/quests/_643_RiseAndFallOfTheElrokiTribe.java M /WITHHELD/WITHHELD/dist/gameserver/data/stats/items/15400-15499.xml M /WITHHELD/WITHHELD/dist/gameserver/data/stats/items/700-799.xml M /WITHHELD/WITHHELD/dist/gameserver/data/stats/npc/22600-22699.xml</pre>

本质上,我想移除<pre>标记和它们之间的任何东西。

我正在使用以下preg_replace

代码语言:javascript
复制
preg_replace("/(<pre>.*<\/pre>)/", "", $str);

当我的字符串包含我想作为静态变量删除的位时,它确实能工作,但是当我试图在RSS输出循环中替换它时,不工作。

代码语言:javascript
复制
    $i = 1;

    foreach($rs['items'] as &$item) {
    $arr = array($i);
    $a = array_fill_keys($arr, (string)$item['description']);
    $desc = (string)$a[$i];
    $desc = preg_replace("/(<pre>.*<\/pre>)/", "", $desc);

    echo "\t<li><a href=\"$item[link]\">(".$i.")".$item['title']."</a><br />";
    echo $desc;
    echo "</li>\n";
    $i++;
    }

从上面写得不好的代码可以看出,我完全不知所措,并且尝试过许多方法来完成这项工作。

description ($desc)节点保持不变,即使我试图将整个输出保存为变量($htm),然后运行preg_replace。

有什么想法吗?

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-19 12:42:36

要保存更改,您必须引用它作为&$item而不是$item,如下所示:

代码语言:javascript
复制
foreach($rs['items'] as &$item) //Pass by reference using "&"
{
 $arr = array($i);
 $a = array_fill_keys($arr, (string)$item['description']);
 $desc = (string)$a[$i];
 $desc = preg_replace("/(<pre>.*<\/pre>)/", "", $desc);

 $htm .= "\t<li><a href=\"$item[link]\">(".$i.")".$item['title']."</a><br />";
 $htm .= replace($desc);
 $htm .= "</li>\n";
 $i++;
 $item['description'] = $desc; //Add this
}

那应该管用。让我知道,如果它仍然没有。

编辑:只是在循环的末尾添加$item‘’description‘= $desc;,如上面所示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42327260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档