PHP:从HTML标签中过滤出文本,处理它,并再次将文本放置在它原来的位置(Drupal 9)[重复]

ax6ht2ek  于 2023-08-02  发布在  PHP
关注(0)|答案(1)|浏览(102)

此问题在此处已有答案

How do you parse and process HTML/XML in PHP?(31答案)
7天前关闭
我一直试图找到一种方法来解决下面的问题使用PHP,我有一个HTML文本从CKEditor,我想取代某些话,我发现匹配,从一个文件,并添加一个链接到这些话。但我必须忽略来自<i>,<b>,<strong>,<table>,<figure>等标签的单词,只允许来自<p>标签的单词。有没有一个PHP函数或逻辑可以用来实现这个目标?请帮帮我
更新:我想实现的是,假设我有下面的HTML,

<p>My Text and an Old amoxicillin and more </p>
<p>My Text and an Old2 <h3>My Text under h3 and an Old amoxicillin and more </h3> Word and more </p>
<p>My Text and an Old3 Word and more <table>My Text under table an Old Word and more </table> </p>
<p>My Text and an Old3 Word and more <i>My Text under i and an Old Word and more </i> </p>
<p>My Text and an Old3 Word and more <strong>My Text  under strong and an Old Word and more </strong> </p>
<h3>My Text and an Old Word and more </h3>

字符串
我想替换旧字新字从文本是只 Package 在<p>和忽略从所有其他标签。而且即使是在
并且再次 Package 在不需要的标签中,如上述元素,它也应该被忽略。
先谢谢你。
我还没有尝试太多,但我的头撞在墙上想弄清楚这一点。;)

nhhxz33t

nhhxz33t1#

是的,你可以使用preg_match和regex规则
示例

$re = '/<p.*?>(.*?)<\/p>/m';
$str = '<i> test</i>
<p>x</p>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

字符串
https://regex101.com/r/AdqV0a/1
你也可以更具体地说明<p></p>是否可以包含上面的任何标记。
有几个选项可以使用,如preg_matchpreg_replace等。
上面的代码只是一个简单的例子。

相关问题