PHP从引用网址

时间:2016-04-17 15:07:12

标签: php

我需要显示引用网址的标题,这是我用来实现的代码:

<?php   
if (isset($_SERVER['HTTP_REFERER'])) {
$url_to_load = $_SERVER['HTTP_REFERER'];
$f = file_get_contents($url_to_load);
$p1 = strpos($f, "<title>");//position start
$qe = substr($f, $p1);//string from start position
$p2 = strpos($qe, "</title>");//position end
$query = substr($qe, 7, $p2-2);//cuts from start position +7 (<title>) untill end position -2...
echo $query;}
else{
$ref_url = 'No Reffering URL'; // show failure message
}//end else no referer set
echo "$ref_url";
?>

当我使用具有以下代码的URL访问包含此代码的页面时:

<title>Title Of Referrer</title>

代码有效,但仍然有结束标记的一部分,当我检查源代码时,这是我将得到的:

Title Of Referrer</tit

我需要更改什么才能完全删除结束标记?

1 个答案:

答案 0 :(得分:2)

$query = substr($qe, 7, $p2-7);//cuts from start position +7 (<title>) untill end position -2...

您只在结尾标题的末尾减去2,但在开始标题上添加7 尝试上面的代码,看看是否有效

编辑:
另一种解决方案是这样做。

 $query = strip_tags(substr($qe, 0, $p2));

这会保存所有标题标签,但随后会使用strip_tags()

删除它们

EDIT2:
我建议的代码中还有其他一些东西。

$f = file_get_contents($url_to_load);
$query = strip_tags(substr($f, strpos($f, "<title>"),  strpos($f, "</title>")));

此代码将其归结为两行代码并使用较少的变量。你也可以摆脱$ f,但它可能对其他东西很有用,它只是一个变量。