PHP 获取网页地址(包括锚点标记) 楼主最好说一下想做什么提供一下相关代码因为这个问题要针对不同情况解决PHP不能直接取得#后的内容 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想做个插件,把CTB论坛上的东西,全部生成静态文件。CTB论坛上,为了方便引用,每楼都有一个锚标,就是#1之类的。将论坛生成静态时,也为了方便引用。因此,才想办法获取网页地址后面的#。PHP如果不能获取的话,使用Java,能不能将获取的地址,让PHP使用下。 这个是客户端的限制,浏览器自己是不会发送#后面的字符的,所以在服务端做什么工作都是没有用的??所以,楼主要用JavaScript获取后,用Ajax发送数据,才可以的。 那你只要在生成静态文件的过程中在html中找出连结的锚标就可以(就是字符串搜索)不需要经浏览器取得 设想下:CTB论坛与论坛静态网页在不同目录。1、显示帖子:http://abc.com/index.php?tid=10#1其对应的静态网页名是:10.htm2、静态网页目录中使用index.php处理GET的信息。a,j是否为1,是则进行PHP处理。否,Java处理。Java处理:使用Java获取后面#的内容,将信息格式化后重新再提交给本身。如index.php?tid=10&miaobiao=1&j=1在这里,说明下,miaobiao,为锚标信息。j=1时,说明是2次提交。PHP处理:顺利读取网页地址的GET值。并使用PHP的内置跳转,10.htm#1说半天,我自己也迷了,思路是这个,问题是,前面的Java处理不好整,得想想办法。以下是源PHP显示静态源码:<?php$S_zf_shuzu = "QL2_";//QL2_1_27,2if (isset($_GET['mods'])){ switch($_GET['mods']){ case "topicdisplay"://帖子内容显示 echo "topicdisplay <br>"; if (isset($_GET['action']) and $_GET['action']=="say"){//显示公告 if (isset($_GET['forumid'])){ $S_zf_shuzu .= $_GET['forumid']."_say"; }else{ $S_zf_shuzu .= "all_say";} }else{ if (isset($_GET['forumid'])){//获取版块ID $S_zf_shuzu .= $_GET['forumid']; if (isset($_GET['postid'])){//获取帖子ID $S_zf_shuzu .= "_".$_GET['postid']; if (isset($_GET['p'])){//获取页数 $S_zf_shuzu .=",".$_GET['p']; }else{//默认为第一页 $S_zf_shuzu .=",1";} } }else{//forumid无值时显示第1个版块 $S_zf_shuzu .="1";} } break; case "forumdisplay"://版块内容显示 echo "forumdisplay<br>"; if (isset($_GET['forumid'])){//获取版块ID $S_zf_shuzu .= $_GET['forumid']; }else{//forumid无值时显示第1个版块 $S_zf_shuzu .="1";} if (isset($_GET['action'])){//显示分类版块 if (isset($_GET['catId'])){ $S_zf_shuzu =$_GET['catId']; }else{$S_zf_shuzu="index";} } break; case "others"://帮助信息显示 echo "others<br>"; if (isset($_GET['action'])){ $S_zf_shuzu .= $_GET['action']; }else{ $S_zf_shuzu .= "ctbhelp";} break; case "member": echo "member<br>"; if (isset($_GET['action']) and isset($_GET['id'])){ $S_zf_shuzu .= "info_".$_GET['id']; }else{ $S_zf_shuzu .="info_3";} break; default: $S_zf_shuzu = "index"; }}else{$S_zf_shuzu="index";}$S_zf_shuzu.=".htm";echo $S_zf_shuzu;?>演示方式:?mods=forumdisplay&forumid=9将CTB论坛的地址,转义成HTM文件名。 这样根本不需要处理吧你另存http://abc.com/index.php?tid=10 为 10.htm路径用10.htm#1效果不会变的那个标签浏览器会自动跟进 但问题是,需要PHP对信息处理下。地址,index.php?tid=10#1处理后才能得到10.htm,及#1。 关于php从数据库读取图片路径,在页面显示的问题 关于nginx的限制线程问题 高手来看看这问题?? PHP写的一个完整的购物车程序 查询条件如何带到第二页? 我在Edond注册的域名,怎么Tech信息和Bill信息都是于震???????????? 介绍个基于php的mvc框架 如何把html嵌入到php中去? win2k server+php4.2文件上传错误 小弟正在帮人规划一个学生网站(设计)刚接触,不太懂,有没有可供参考的网站规划文档?各位大虾多多指教!!送高分!! PHP怎么解决输入框内容含有 \ ' " 等字符的问题 php正则出问题,帮我看看
这个是客户端的限制,浏览器自己是不会发送#后面的字符的,所以在服务端做什么工作都是没有用的??所以,楼主要用JavaScript获取后,用Ajax发送数据,才可以的。
那你只要在生成静态文件的过程中
在html中找出连结的锚标就可以(就是字符串搜索)不需要经浏览器取得
CTB论坛与论坛静态网页在不同目录。
1、显示帖子:http://abc.com/index.php?tid=10#1
其对应的静态网页名是:10.htm
2、静态网页目录中使用index.php处理GET的信息。
a,j是否为1,是则进行PHP处理。否,Java处理。Java处理:
使用Java获取后面#的内容,将信息格式化后重新再提交给本身。如index.php?tid=10&miaobiao=1&j=1
在这里,说明下,miaobiao,为锚标信息。j=1时,说明是2次提交。PHP处理:
顺利读取网页地址的GET值。
并使用PHP的内置跳转,10.htm#1说半天,我自己也迷了,思路是这个,问题是,前面的Java处理不好整,得想想办法。以下是源PHP显示静态源码:
<?php
$S_zf_shuzu = "QL2_";
//QL2_1_27,2
if (isset($_GET['mods'])){
switch($_GET['mods']){
case "topicdisplay"://帖子内容显示
echo "topicdisplay <br>";
if (isset($_GET['action']) and $_GET['action']=="say"){//显示公告
if (isset($_GET['forumid'])){
$S_zf_shuzu .= $_GET['forumid']."_say";
}else{
$S_zf_shuzu .= "all_say";}
}else{
if (isset($_GET['forumid'])){//获取版块ID
$S_zf_shuzu .= $_GET['forumid'];
if (isset($_GET['postid'])){//获取帖子ID
$S_zf_shuzu .= "_".$_GET['postid'];
if (isset($_GET['p'])){//获取页数
$S_zf_shuzu .=",".$_GET['p'];
}else{//默认为第一页
$S_zf_shuzu .=",1";}
}
}else{//forumid无值时显示第1个版块
$S_zf_shuzu .="1";}
}
break; case "forumdisplay"://版块内容显示
echo "forumdisplay<br>";
if (isset($_GET['forumid'])){//获取版块ID
$S_zf_shuzu .= $_GET['forumid'];
}else{//forumid无值时显示第1个版块
$S_zf_shuzu .="1";} if (isset($_GET['action'])){//显示分类版块
if (isset($_GET['catId'])){
$S_zf_shuzu =$_GET['catId'];
}else{$S_zf_shuzu="index";}
}
break; case "others"://帮助信息显示
echo "others<br>";
if (isset($_GET['action'])){
$S_zf_shuzu .= $_GET['action'];
}else{
$S_zf_shuzu .= "ctbhelp";}
break; case "member":
echo "member<br>";
if (isset($_GET['action']) and isset($_GET['id'])){
$S_zf_shuzu .= "info_".$_GET['id'];
}else{
$S_zf_shuzu .="info_3";}
break; default:
$S_zf_shuzu = "index";
}
}else{
$S_zf_shuzu="index";}
$S_zf_shuzu.=".htm";
echo $S_zf_shuzu;
?>演示方式:?mods=forumdisplay&forumid=9
将CTB论坛的地址,转义成HTM文件名。
路径用10.htm#1
效果不会变的那个标签浏览器会自动跟进