由<br>,<br/>,<p>将PHP preg_split输入到单独的段落中

帕梅拉

我正在从一个格式非常错误的页面卷曲。我正在尝试将其解析为段落的页面中有一个特定的片段。该输入代码段可以被一个或多个标签分开<p>和/</p>或分开如果有两个标签,我不希望它们成为两个单独的象形文字。<br><br/><br>

我正在尝试解析/显示的当前代码是

$paragraphs = preg_split('/(<\s*p\s*\/?>)|(<\s*br\s*\/?>)|(\s\s+)|(<\s*\/p\s*\/?>)/', $article, -1, PREG_SPLIT_NO_EMPTY);
$paragraphcount = count($paragraphs);
for($x = 1; $x <= $paragraphcount; $x++ )
    {
    echo "<p>".$paragraphs[$x-1]."</p>";
    }

但是,这不能按预期方式工作。一些不同的输入/输出如下:

输入1: first part </p> <p> second part </p> <p> third part </p> <p> fourth part <br/>

输出1: <p>first part </p><p> </p><p>second part </p><p> </p><p> third part </p><p> </p><p>fourth part</p><p> </p>

我的代码分析输入成段; 但是,它还会添加仅包含空格的额外段落

任何帮助,将不胜感激。

如果输入有所不同,则输入为UTF-8。

亭子

这是一个解决方案preg_replace

$article = "first part </p> <p> second part </p> <p> third part </p> 
            <p> fourth part <br/> <br> fifth part";
$healed = substr(
          preg_replace('/(\s*<(\/?p|br)\s*\/?>\s*)+/u', "</p><p>", "<p>$article<p>"),
          4, -3);

它首先将字符串包装起来<p>,然后替换breaks的变体(重复)</p><p>,最后删除开始</p>和结束<p>请注意,这不会产生(中间)数组,而是最终的字符串。

echo $healed;

输出:

<p>first part</p><p>second part</p><p>third part</p><p>fourth part</p><p>fifth part</p>

请注意,您需要在正则表达式的末尾使用u 修饰符才能获得UTF-8支持。

另一方面,如果您需要数组中的段落,preg_split则更适合(使用相同的正则表达式):

$paragraphs = preg_split('/(\s*<(\/?p|br)\s*\/?>\s*)+/u',
                         $article, null, PREG_SPLIT_NO_EMPTY);

如果您再写:

foreach ($paragraphs as $paragraph) {
    echo "$paragraph\n";
}

你得到:

first part
second part
third part
fourth part
fifth part

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除PHP中的多余标签'<p> <br> </ p>'?

来自分类Dev

将标签p替换为Blockquote中的br

来自分类Dev

替换beautifulsoup中的<p>和<br>标签

来自分类Dev

通过javascript函数将<br>插入段落

来自分类Dev

如何使用 <p> 和 <br> 将 Wordpress 帖子内容导出到 csv 中?

来自分类Dev

\ n和<br />在php中的区别

来自分类Dev

PHP-回声<br>

来自分类Dev

PHP删除BR标签

来自分类Dev

ReactJS <p />或<br/>在render()中不起作用

来自分类Dev

ReactJS <p />或<br/>在render()中不起作用

来自分类Dev

刮取由 <br>-tags 分隔的列表

来自分类Dev

换行后<br> <p>内的<p>内的文本将忽略<p>标记的css(如果还存在标题)

来自分类Dev

如何在按Enter键时将<p> </ p>标签更改为<br>标签

来自分类Dev

将* <BR>替换为<li>

来自分类Dev

php替换多个br标签

来自分类Dev

\ n对PHP_EOL对<br>?

来自分类Dev

php echo显示br标签

来自分类Dev

mySQL,PHP,Json错误<br

来自分类Dev

php替换多个br标签

来自分类Dev

Android:替换<p>和<br />标签

来自分类Dev

Android:替换<p>和<br />标签

来自分类Dev

当tun0不是系统的默认路由时如何将流量从br0路由到tun0

来自分类Dev

Thymeleaf-将<br>附加到输入标签

来自分类Dev

Thymeleaf-将<br>附加到输入标签

来自分类Dev

通过富文本编辑器删除由CMS用户填充的div中的顺序<br>

来自分类Dev

将所有<br>标记替换为javascript中的空格

来自分类Dev

将 div 中的无序列表居中,其中 <br> 位于

来自分类Dev

php中的sql数据下拉列表中的br标签

来自分类Dev

从 PHP 中的 XML 字符串中删除 <br /> 标签