如何去除多余的
使用 PHP 从 HTML 代码中获取标签?

发布于 2024-11-13 08:23:09 字数 378 浏览 3 评论 0原文

我正在用 PHP 解析一些混乱的 HTML 代码,其中有一些多余的
标签,我想稍微清理一下它们。例如:

<br>

<br /><br /> 


<br>

我如何使用 preg_replace() 替换类似的内容?:

<br /><br />

换行符、空格以及

之间的差异> 和
都必须考虑在内。

编辑:基本上我想将三个或更多连续中断的每个实例替换为两个。

I'm parsing some messy HTML code with PHP in which there are some redundant
tags and I would like to clean them up a bit. For instance:

<br>

<br /><br /> 


<br>

How would I replace something like that with this using preg_replace()?:

<br /><br />

Newlines, spaces, and the differences between <br>, <br/>, and <br /> would all have to be accounted for.

Edit: Basically I'd like to replace every instance of three or more successive breaks with just two.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

楠木可依 2024-11-20 08:23:30

使用str_replace,它更适合简单替换,并且您还可以传递数组而不是单个搜索值。

$newcode = str_replace("<br>", "", $messycode);

Use str_replace, its much better for simple replacement, and you can also pass an array instead of a single search value.

$newcode = str_replace("<br>", "", $messycode);
勿忘初心 2024-11-20 08:23:27

尝试使用:

preg_replace('/<br\s*\/?>/', '', $inputString);

Try with:

preg_replace('/<br\s*\/?>/', '', $inputString);
祁梦 2024-11-20 08:23:25

这将替换所有中断...即使它们是大写的:

preg_replace('/<br[^>]*>/i', '', $string);

this will replace all breaks ... even if they're in uppercase:

preg_replace('/<br[^>]*>/i', '', $string);
橘虞初梦 2024-11-20 08:23:20

这应该可以使用最小说明符:

preg_replace('/(<br[\s]?[\/]?>[\s]*){3,}/', '<br /><br />', $multibreaks);

也应该匹配令人震惊的

gt;

结构。

This should work, using minimum specifier:

preg_replace('/(<br[\s]?[\/]?>[\s]*){3,}/', '<br /><br />', $multibreaks);

Should match appalling <br><br /><br/><br> constructions too.

青萝楚歌 2024-11-20 08:23:17

这是你可以使用的东西。第一行查找只要有 2 个或更多
标记(不同类型之间有空格),并将它们替换为格式良好的
>

如果您也需要的话,我还添加了第二行来清理其余的
标记。

function clean($txt)
{
    $txt=preg_replace("{(<br[\\s]*(>|\/>)\s*){2,}}i", "<br /><br />", $txt);
    $txt=preg_replace("{(<br[\\s]*(>|\/>)\s*)}i", "<br />", $txt);
    return $txt;
}

Here is something you can use. The first line finds whenever there is 2 or more <br> tags (with whitespace between and different types) and replace them with wellformated <br /><br />.

I also included the second line to clean up the rest of the <br> tags if you want that too.

function clean($txt)
{
    $txt=preg_replace("{(<br[\\s]*(>|\/>)\s*){2,}}i", "<br /><br />", $txt);
    $txt=preg_replace("{(<br[\\s]*(>|\/>)\s*)}i", "<br />", $txt);
    return $txt;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文