从PHP文件中解析/获取HTML标题元素以进行Ajax调用

时间:2011-12-31 07:00:50

标签: php html ajax parsing

我正在尝试获取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脚本吗?

1 个答案:

答案 0 :(得分:0)

这是我收集的内容:你有一堆HTML页面。你有一个index.php脚本,它接受一个URL,从该URL加载HTML,交换标题,然后将HTML吐出来?

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

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

<强>的index.php
删除RegEx。你正在使用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";