Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如何从一行中的多个p标记获取文本_Php_Regex_Preg Replace - Fatal编程技术网

PHP-如何从一行中的多个p标记获取文本

PHP-如何从一行中的多个p标记获取文本,php,regex,preg-replace,Php,Regex,Preg Replace,我有一个包含一些html的变量。在html中,有几个相邻的p标记。我想从这些p标签中检索文本,将它们格式化为1个段落,并将这个新段落设置为一个新变量。这有意义吗 <h2></h2> <p>date</p> <ul></ul> <iframe></iframe> <p>apple</p> <p>banana</p> <p>grape</p

我有一个包含一些html的变量。在html中,有几个相邻的p标记。我想从这些p标签中检索文本,将它们格式化为1个段落,并将这个新段落设置为一个新变量。这有意义吗

<h2></h2>
<p>date</p>
<ul></ul>
<iframe></iframe>
<p>apple</p>
<p>banana</p>
<p>grape</p>
<ul></ul>

日期

    苹果

    香蕉

    葡萄

      变成:

      <p>apple banana grape</p>
      
      苹果香蕉葡萄

      注意:html中的元素可能会有所不同。例如,没有iframe。某处的图像等。

      示例:

      $html = '<h2></h2>
        <p>date</p>
        <ul></ul>
        <iframe></iframe>
        <p>apple</p>
        <p>banana</p>
        <p>grape</p>
        <ul></ul>';
      
      if (preg_match_all('~<p>(?P<paragraphs>.*?)</p>~is', $html, $matches)) {
        print_r($matches['paragraphs']);
      }
      
      附言。 “聪明的”投反对票的人你能评论一下你为什么要投反对票吗?:()()()()()()()40

      p.p.S 为两位投票被否决者制作的特别版:

      $document = new DOMDocument();
      $document->loadHTML($html);
      $paragraphs = $document->getElementsByTagName('p');
      $result     = array();
      
      foreach ($paragraphs as $paragraph) {
        $result[] = $paragraph->nodeValue;  
      }
      
      print_r($result);
      
      例如:

      $html = '<h2></h2>
        <p>date</p>
        <ul></ul>
        <iframe></iframe>
        <p>apple</p>
        <p>banana</p>
        <p>grape</p>
        <ul></ul>';
      
      if (preg_match_all('~<p>(?P<paragraphs>.*?)</p>~is', $html, $matches)) {
        print_r($matches['paragraphs']);
      }
      
      附言。 “聪明的”投反对票的人你能评论一下你为什么要投反对票吗?:()()()()()()()40

      p.p.S 为两位投票被否决者制作的特别版:

      $document = new DOMDocument();
      $document->loadHTML($html);
      $paragraphs = $document->getElementsByTagName('p');
      $result     = array();
      
      foreach ($paragraphs as $paragraph) {
        $result[] = $paragraph->nodeValue;  
      }
      
      print_r($result);
      

      您可以使用Xpath来实现这一点

      $html = '<h2></h2>
      <p>date</p>
      <ul></ul>
      <iframe></iframe>
      <p>apple</p>
      <p>banana</p>
      <p>grape</p>
      <ul></ul>';
      
      $doc = new DOMDocument();
      $doc->loadHTML($html);
      
      $xpath = new DOMXpath($doc);
      
      $elements = $xpath->query("//p");
      foreach ($elements as $node){
      echo $node->nodeValue. "<br/>";
      }
      
      $html='1!'
      日期

        苹果

        香蕉

        葡萄

          ”; $doc=新的DOMDocument(); $doc->loadHTML($html); $xpath=新的DOMXpath($doc); $elements=$xpath->query(“//p”); foreach($元素作为$node){ echo$node->nodeValue。“
          ”; }
          您可以使用Xpath来实现这一点

          $html = '<h2></h2>
          <p>date</p>
          <ul></ul>
          <iframe></iframe>
          <p>apple</p>
          <p>banana</p>
          <p>grape</p>
          <ul></ul>';
          
          $doc = new DOMDocument();
          $doc->loadHTML($html);
          
          $xpath = new DOMXpath($doc);
          
          $elements = $xpath->query("//p");
          foreach ($elements as $node){
          echo $node->nodeValue. "<br/>";
          }
          
          $html='1!'
          日期

            苹果

            香蕉

            葡萄

              ”; $doc=新的DOMDocument(); $doc->loadHTML($html); $xpath=新的DOMXpath($doc); $elements=$xpath->query(“//p”); foreach($元素作为$node){ echo$node->nodeValue。“
              ”; }
              我明白了,您可以使用@orourkrk删除HTML标记。我的php知识是有限的,因为我是一个字体端程序员,但我已经开始学习php。你链接到的页面有几个建议,而不是正则表达式,你能建议其中哪一个是我的案例的首选解决方案吗?我明白了,你可以用@orourkrk删除HTML标记。我的php知识是有限的,因为我是一个字体端程序员,但我已经开始学习php。你链接到的页面有几个建议,而不是正则表达式,你能建议其中哪一个是我的案例的首选解决方案吗?我感觉有人将要发布这个链接,并评论“不要用正则表达式解析HTML”。。。使用DOMDocument可能是一种更好的方法是的,的确如此我贴了一个和你的答案很相似的帖子,结果被炒了鱿鱼!我有一种感觉,有人将要发布这个带有评论的链接“不要用正则表达式解析HTML”。。。使用DOMDocument可能是一种更好的方法是的,的确如此我贴了一个和你的答案很相似的帖子,结果被炒了鱿鱼!