gpt4 book ai didi

php - 获取字符串提取中的所有段落

转载 作者:行者123 更新时间:2023-12-04 18:15:22 26 4
gpt4 key购买 nike

我从数据库中提取了几段,并尝试将这些段落分成一个带有正则表达式和不同类的数组......但没有任何效果。

我试图这样做:

   public function get_first_para(){
$doc = new DOMDocument();
$doc->loadHTML($this->review);
foreach($doc->getElementsByTagName('p') as $paragraph) {
echo $paragraph."<br/><br/><br/>";
}
}

但我明白了:
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Unexpected end tag : p in Entity, line: 9 in C:\Inetpub\vhosts\bestcamdirectory.com\httpdocs\sandbox\model\ReviewContentExtractor.php on line 18

可捕获的 fatal error : DOMElement 类的对象无法在第 20 行的 C:\Inetpub\vhosts\bestcamdirectory.com\httpdocs\sandbox\model\ReviewContentExtractor.php 中转换为字符串

为什么我会收到消息,有没有一种简单的方法可以从字符串中提取所有段落?

更新:
   public function get_first_para(){
$pattern="/<p>(.+?)<\/p>/i";
preg_match_all($pattern,$this->review,$matches,PREG_PATTERN_ORDER);
return $matches;
}

我更喜欢第二种方式..但它也不好用..

最佳答案

DOMDocument::getElementsByTagName返回一个可迭代但不是数组的 DOMNodeList 对象。在 foreach $paragraph变量是 DOMElement 的一个变量所以简单地将它用作字符串是行不通的(正如错误所解释的那样)。
你想要的是 DOMElement 的文本内容,可以通过 textContent 获得。这些属性(继承自 DOMNode 类):

foreach($doc->getElementsByTagName('p') as $paragraph) {
echo $paragraph->textContent."<br/><br/><br/>"; // for text only
}
或者,如果您需要 DOMNode 的全部内容,您可以使用 DOMDocument::saveHTML :
foreach($doc->getElementsByTagName('p') as $paragraph) {
echo $doc->saveHTML($paragraph)."<br/><br/><br/>\n"; // with the <p> tag

// without the <p>
// if you don't need the containing <p> tag, you can iterate trough it's childs and output them
foreach ($paragraph->childNodes as $cnode) {
echo $doc->saveHTML($cnode);
}
}
至于您的 loadHTML 错误,html 输入无效,您可以使用以下命令抑制警告:
libxml_use_internal_errors(true); // before loading the html content
如果您需要这些错误,请参阅 libxml's error handling part的手册。
编辑
由于您坚持使用正则表达式,因此您可以这样做:
preg_match_all('!<p>(.+?)</p>!sim',$html,$matches,PREG_PATTERN_ORDER);
pattern modifiers : m表示多行, s表示 .可以匹配行尾, i为了不区分大小写。

关于php - 获取字符串提取中的所有段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11840263/

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