我正在以编程方式清理评论和其他用户提交的内容中的一些基本语法。大写 I、句子的第一个字母等。注释和内容与 HTML 混合在一起,因为用户可以选择格式化文本。
事实证明,这实际上比预期更具挑战性,尤其是对于 PHP 和正则表达式的新手来说。
是否有像 ucfirst 这样的函数可以忽略 html 来帮助句子大写?
另外,任何关于清理 html 中的文本的链接或教程,我们将不胜感激。请在评论中留下您认为有帮助的任何内容。谢谢!
编辑:
示例文本:
<div><p>i wuz walkin thru the PaRK and found <strong>ur dog</strong>. <br />i hoPe to get a reward.<br /> plz call or text 7zero4 8two8 49 sevenseven</div>
我需要它(最终)
<div><p>I was walking through the park and found <strong>your dog<strong>. <p>I hope to get a reward.</p><p> Please call or text (704) 828-4977.</p>
我知道这比预期的问题有点远,但我的想法是逐步做到这一点。 ucfirst() 只是我用来每次扫描一次进行一次小型清理的众多函数之一。即使我必须通过过滤器运行文本 100 次,当网站没有流量时,它也会在 cron 上运行。我希望有一个讨论论坛可以继续下去,因为显然会有一些关于继续这种方法的好主意。关于如何将其作为一个整体项目的任何想法,请留言。
我想本着问题本身的精神。那么 ucfirst 就不是最好的函数,因为它不能接受要忽略的参数列表。如果有一个 IGNORE_HTML 标志就太好了!
鉴于这是一个 PHP 问题,那么下面推荐的 DOM 解析器听起来像是最好的答案?想法?
您还可以向所需的元素添加 CSS 伪元素,如下所示:
div:first-letter {
text-transform: uppercase;
}
但是你可能需要改变打印句子的方式(如果你将它们全部打印在一个巨大的标签中),因为 CSS 缺乏检测单个标签内新句子开始的能力:(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)