是什么导致我的PHP页面将html标签呈现为文本(我可以做些什么来修复它)?

时间:2015-08-03 18:21:09

标签: php html

我有以下PHP代码:当它从注释后面被注释掉(现在就是这样)// ...这里的更多东西到那个注释块的末尾,我的页面从那个第二个呈现html php阻止如预期的截图。

如果我取消注释该块,它会像下面的代码之后的屏幕截图那样渲染,这不是我想要的(我希望渲染的html如第一个屏幕截图所示)。我的注释块中唯一没有显示的是一个卷曲网页的函数调用,用DomXNode类型的东西解析html,并返回一个包含3个元素的数组。我如何才能获得html的原始渲染以及我可能在做什么,这对我来说是毁了?我尝试使用echo而不是print,这没什么区别。

老实说,我在这里搜索了答案,发现很多页面描述了如何做到与我想要的相反,所以请温柔地对待我。我很惊讶我找不到类似的问题,我知道这里必须有一个简单的答案。谢谢!

screenshot

<?php 
// ... more stuff in here
  /*
      include("../../includes/curl_fx.php");
      if ($doAppend === "parcel") {
        $lines = explode(PHP_EOL, $Data);
        foreach($lines as $line) {
          if(strpos($line, "http") > 0) {
            $start = stripos(strval($line), "http");
            $fullLength = strlen($line);
            $urlLength = ($fullLength - $start);
            $fullUrl = substr($line, $start, $urlLength);
            $arraySDAT = getSDAT($fullUrl);
            $line .= ", " . $arraySDAT[0] . ", " . $arraySDAT[1] . ", " . $arraySDAT[2] . "\n";
            fwrite($Handle, $line);
          }  
        }
      }
    */
    ?>
    <?php

      if ($DataAdded === true) {
        print "<h2>YourFile.txt</h2>Data has been added.<br />Close this window or tab to return to the web map.<br />";
      } else {
        print "Data may not have been added. Check the file.<br />";
      }
      fclose($Handle);
      print $doAppendAnswer;
      print "<br />";

    ?>

enter image description here

编辑:这是函数。

<?php

function getSDAT ($fullUrl="") {

  $ch = curl_init($fullUrl);
  if (! $ch) {
    die( "Cannot allocate a new PHP-CURL handle" );
  }
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  $data = curl_exec($ch);
  header("Content-type: text");
  curl_close($ch);

  libxml_use_internal_errors(true);
  libxml_clear_errors();

  $doc = DOMDocument::loadHTML($data);
  $xpath = new DOMXPath($doc);

  $ownName1query = '//table/tr/td/span[@id="MainContent_MainContent_cphMainContentArea_ucSearchType_wzrdRealPropertySearch_ucDetailsSearch_dlstDetaisSearch_lblOwnerName_0"][@class="text"]';
  $ownName2query = '//table/tr/td/span[@id="MainContent_MainContent_cphMainContentArea_ucSearchType_wzrdRealPropertySearch_ucDetailsSearch_dlstDetaisSearch_lblOwnerName2_0"][@class="text"]';
  $ownAddrquery = '//table/tr/td/span[@id="MainContent_MainContent_cphMainContentArea_ucSearchType_wzrdRealPropertySearch_ucDetailsSearch_dlstDetaisSearch_lblMailingAddress_0"][@class="text"]';

  $entries = $xpath->query($ownName1query);
  foreach($entries as $entry) {
    $ownname1 = $entry->nodeValue;
  }

  $entries = $xpath->query($ownName2query);
  foreach($entries as $entry) {
    $ownname2 = $entry->nodeValue;
  }

  $entries = $xpath->query($ownAddrquery);
  $pattern = '#<br\s*/?>#i';
  $replacement = ", ";
  $i=0;
  foreach($entries as $entry) {
    $ownAddr = $entry->nodeValue;
    if(!$entry->childNodes == 0) {
      $ownAddr = $doc->saveHTML($entry);      
    }
    $ownAddr2 = preg_replace($pattern, $replacement, $ownAddr, 15, $count); // replace <br/> with a comma
    $ownAddr3 = strip_tags($ownAddr2);
  }

  return array($ownname1, $ownname2, $ownAddr3);
}

2 个答案:

答案 0 :(得分:6)

你的问题是:

header("Content-type: text");

删除它。它为什么存在?

答案 1 :(得分:1)

如上所述,这是导致您出现问题的标题。您会看到标题决定了当前文档应具有的内容类型或当前文档的行为方式 - 通常位于&lt;头&gt; ...&lt; / head&gt; HTML的一部分。您可以使用它来声明内容类型,控制缓存,重定向等。

当您使用标题(“Content-type:text”)时,您决定当前文档“yourdocument.php”的内容是文本而不是HTML的默认值。

wp_enqueue_style( 'maincss', get_template_directory_uri() . '/style.css',array('bootstrap-css') );