我正在尝试将当前页面标题存储在PHP变量中,但是当我尝试获取页面标题时服务器挂起。
PAGE_TITLE():
function page_title($url) {
$fp = file_get_contents($url);
if (!$fp)
return null;
$res = preg_match("/<title>(.*)<\/title>/siU", $fp, $title_matches);
if (!$res)
return null;
$title = preg_replace('/\bReactionDB\b/i',' ', $title_matches[1]);
$title = preg_replace('/\|/', '', $title);
$title = trim($title);
return $title;
}
curPageURL():
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
服务器在放弃之前尝试执行page_title();
10-20秒时会挂起。
$domene = curPageURL();
$pagetitle = page_title($domene);
我已经测试了page_title();
,看看它是否有效。如果我输入一个外部URL,它会显示页面的页面标题没有问题,但我需要它来获取当前页面/网址的页面标题。
我还测试了curPageURL();
的输出,它确实获取了当前网页的完整网址。
如果有解决方案,它必须包括将获取的页面标题存储到PHP变量($pagetitle
)中的能力。
答案 0 :(得分:0)
尝试使用curl
代替file_get_contents
,看看是否发生了同样的事情:
function url_get_contents($url) {
if (!function_exists('curl_init'))
return null;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
$res = preg_match("/<title>(.*)<\/title>/siU", $output, $title_matches);
if (!$res)
return null;
$title = preg_replace('/\bReactionDB\b/i',' ', $title_matches[1]);
$title = preg_replace('/\|/', '', $title);
$title = trim($title);
return $output;
}
$domene = curPageURL();
$pagetitle = url_get_contents($domene);
的更新强>
示例脚本:
<?php
$script = explode('/', $_SERVER['PHP_SELF']);
$scriptname = $script[count($script) - 1];
switch($scriptname) {
case 'index.php':
$title = 'Welcome';
break;
case 'about.php':
$title = 'About Us';
break;
default:
$title = '';
}
?>
<title><?php if ($title != '') { echo $title . ' | '; } ?>ReactionDB</title>
现在,您可以在需要时随时随地使用$title
。