【问题标题】:Parse/Get HTML title element from a PHP file for an Ajax call从 PHP 文件中解析/获取 HTML 标题元素以进行 Ajax 调用
【发布时间】:2011-12-31 07:00:49
【问题描述】:

我正在尝试获取包含在 PHP 文件的 echo 语句中的 title 元素的内容。

我正在为一个网站使用一个 PHP 文件,当通过 Ajax 调用访问它时,它只返回页面的一部分,但当直接访问它时,它返回整个页面。

这一切都很好。但是我想在通过Ajax调用访问页面时更改页面的标题,标题标签的innerHTML就是我想要得到的。

if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
echo '
    <!DOCTYPE HTML>
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <title>Products at Avrent</title>
        <meta http-equiv="content-type" content="text/htmlcharset=utf-8"   />

对于 HTML 文件,此代码有效。

<?php

if(isset($_GET['url']))  {
    $url = $_GET['url'];
    $html = file_get_html($url);
    /* get page's title */
    preg_match("/<title>(.+)<\/title>/siU", $html, $matches);
    $title = $matches[1];
    echo $title;
}
?>

但是当我尝试将它与 PHP 文件一起使用时,它会返回乱码。

谁能帮我找到一个适用于 PHP 文件的 PHP 脚本?

【问题讨论】:

  • 您应该尝试使用一些不同的解决方案进行部分渲染,因为您现在正在做的事情很荒谬
  • 你真的应该用DOMDocument之类的东西来解析HTML。正则表达式确实不是适合这项工作的工具。
  • @Fenec 假设你至少给我一个不同解决方案的提示。我很乐意使用不同的解决方案,尽管我使用的解决方案很好。
  • @GordonM 我正在​​使用 simple_html_dom.php 来解析 HTML,但它似乎不适用于 Head 部分中的元素。除了我的直接问题是解析 PHP 和 simple_html_dom.php 对 PHP 文件根本不起作用。但是感谢您的反馈。

标签: php html ajax parsing


【解决方案1】:

以下是我收集到的信息:您有一堆 HTML 页面。你有一个 index.php 脚本,它接受一个 URL,从那个 URL 加载 HTML,换出标题,然后把 HTML 吐出来?

首先,你为什么要设置这样的东西?如果你坚持...

你(至少非常)应该这样做:

index.php
删除正则表达式。您正在使用 HTML 解析器;用那个!

<?php

if(isset($_GET['url']))  {
    $url = $_GET['url'];
    $html = file_get_html($url);
    /* get page's title */
    $title = $html->find('title', 0)->innertext;
    echo $title;
}
?>

ajax_page.php
从变量中设置标题。

if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
echo '
    <!DOCTYPE HTML>
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <title>' . $page_title . '</title>
        <meta http-equiv="content-type" content="text/htmlcharset=utf-8"   />

然后,从 index.php:

$page_title = "INSERT THE PAGE TITLE HERE";
require "ajax_page.php";

【讨论】:

  • 感谢 primatology 的帮助,在 HTML 页面上获取标题的代码返回错误“尝试获取非对象的属性”。但这不是问题,从我正在使用的 HTML 页面获取标题的代码可以正常工作。我正在尝试对 PHP 文件做同样的事情。我不想更改PHP文件中的标题我想解析文件并获取标题内容。
  • 哦,我的错,现在试试。在 $html->find 中添加了一个索引(第二个参数)。
猜你喜欢
  • 2011-08-22
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2015-02-19
  • 2020-02-22
  • 1970-01-01
相关资源
最近更新 更多