gpt4 book ai didi

PHP:通过合并换行符和正确删除空格来清理 HTML

转载 作者:行者123 更新时间:2023-11-28 03:50:53 25 4
gpt4 key购买 nike

我使用的是 WYSIWYG 编辑器,并且有一堆处理脏 HTML 的正则表达式。原因:我的用户经常按回车键并产生许多多余的新行,例如:

  • <br><br><br> ...
  • <p> <br /> </p>
  • <p> <br /><br /> </p>
  • <p> <br /> </p>
  • <p> &nbsp; <br /> </p>
  • <p> &nbsp; <br /> </p>
  • 还有更多品种,包括 p , &nbsp;br

这就是我目前尝试与此类输入作斗争的方式,尝试使用许多不同的正则表达式将许多连续的换行符合并为 1:

// merge empty p tags into one
// http://stackoverflow.com/q/16809336/1066234
$content = preg_replace('/((<p\s*\/?>\s*)&nbsp;(<\/p\s*\/?>\s*))+/im', "<p>&nbsp;</p>\n", $content);

// remove sceditor's: <p>\n<br>\n</p> from end of string
// http://stackoverflow.com/questions/25269584/how-to-replace-pbr-p-from-end-of-string-that-contain-whitespaces-linebrea
// \s* matches any number of whitespace characters (" ", \t, \n, etc)
// (?:...)+ matches one or more (without capturing the group)
// $ forces match to only be made at the end of the string
$content = preg_replace("/(?:<p>\s*(<br>\s*)+\s*<\/p>\s*)+$/", "", $content);

// remove sceditor's double: http://http://
$content = str_replace('http://http://', 'http://', $content);

// remove spaces from end of string (&nbsp;)
$content = preg_replace('/(&nbsp;)+$/', '', $content);

// remove also <p><br></p> from end of string
$content = preg_replace('/(<p><br><\/p>)+$/', '', $content);

// remove line breaks from end of string - $ is end of line, +$ is end of line including \n
// html with <p>&nbsp;</p>
$content = preg_replace('/(<p>&nbsp;<\/p>)+$/', '', $content);
$content = preg_replace('/(<br>)+$/', '', $content);

// remove line breaks from beginning of string
$content = preg_replace('/^(<p>&nbsp;<\/p>)+/', '', $content);

我正在寻找新的解决方案。是否有任何 HTML 解析器可以告诉我合并换行符和空格?或者也许有人有另一种方法来解决这个问题。

上面的正则表达式解决方案似乎不够合适,因为我的用户“尝试”了换行符的新组合。

最佳答案

我开发了以下代码段来删除重复的 br-Tags。

<?php
$content = "<h1>Hello World</h1><p>Test\r\n<br>\r\n<br >\r\n<br >\r\n<br/>Test\r\n<br />\r\n<br /></p>";

echo "<code>{$content}</code><hr>\r\n\r\n\r\n\r\n";

$contentStripped = preg_replace('/(<br {0,}\/{0,1}>(\\r|\\n){0,}){2,}/', '<br class="reduced" />', $content);
echo "<code>{$contentStripped}</code>\r\n\r\n\r\n\r\n";

enter image description here
您可能需要添加更多测试用例。

关于PHP:通过合并换行符和正确删除空格来清理 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34841209/

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