gpt4 book ai didi

php - 修改两个特定标签之间的字符串 - php

转载 作者:可可西里 更新时间:2023-10-31 23:45:34 24 4
gpt4 key购买 nike

更新的问题,不幸的是我之前没有解释清楚。

详细信息:

我有一个包含多行的数据库,每一行都有大量数据,但每个数据的共同点是 <pre><code></code></pre>标签以随机顺序排列。

例子:

$string = "
<h2>Heading 2</h2>
Something
<pre><code> alot of html and other code here </code></pre>
something something
<pre><code> alot of html and other code here </code></pre>
";


注意:字符串不会每次都按相同的顺序排列,可以有更多或更少的<pre><code>。标签

现在我想显示<pre><code></code><pre>里面的代码标记为纯文本,你知道我必须转换每个 "<""&lt;"">""&gt;"但问题是在 pre 标签之外还有其他标签。如果我使用 htmlspecialchars($string);它会将所有标签显示为纯文本,甚至包括 h2 标签和 pre 标签。

所以我想要一种只使用 htmlspecialchars() 的方法对pre标签之间的数据起作用。

最佳答案

我相信以下方法可能会起作用:

$str = preg_replace("/<pre><code>[^<]*<\/code><\/pre>/", "<pre><code>other code</code></pre>", $str);

echo $str;

例子: https://eval.in/669811

更新:

下面的内容有点站不住脚,但可能有用。

$parts = preg_split("/<pre><code>|<\/code><\/pre>/", $str);

$str = "";
for ($i=0;$i < count($parts);$i++) {
if ($i%2 == 0) {
$str .= ($i != 0?"</code></pre>":"").strip_tags($parts[$i]);
} else {
$str .= "<pre><code>".htmlentities($parts[$i]);
}
}

print_r($str);

基本上它假定当您按 <pre><code> 拆分时或 </code></pre>那么偶数条目在代码部分之外,奇数条目在里面。当然,当 HTML 没有正确平衡时,这会中断,但大多数事情都会发生。

code 之外的东西标签将剥离其标签,并在 code 中删除内容选项卡将获得 htmlentities以保留标签。

示例:https://eval.in/671005

关于php - 修改两个特定标签之间的字符串 - php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40361998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com