我有一个在线项目“本周的问题”;该项目允许用户提交问题。这些问题保存在mysql表中;问题也被发送到另一个simplepost.php,它将问题存储在phpBB中。 我希望将这个phpBB用于每个问题,以便讨论该问题。
现在,我的项目将问题存储在sql表中,并在phpBB中发布问题。
但是当问题在phpBB中发布时,它会在其中存储“http://servername.com/phpBB3/viewtopic.php?f=5&t=24”,其中t = 24就是问题。
我想要抓住这个url并提取t = 24,这样我就可以在我的项目中为每个问题提供一个可点击链接,指出其特定phpBB页面的问题。
假设我的项目已开启:http://servername.com/qotw/profile.html(这允许用户发布问题并将问题插入sql表中,并且在phpBB / simplepost.php中调用也是在phpBB中发布问题)
这个问题在php中可以看到:“http://servername.com/phpBB3/viewtopic.php?f=5&t=24”
请告诉我该怎么办。我怎么能从这个网址抓住这个“t = 24”。
当调用我的simplepost.php时,使用posting.php发布问题并返回返回值。
simplepost.php中的代码如下所示:
$title = "This is the title of the message.";
//$body = "This is the message body.";
$post_fields = array(
'subject' => $title,
'addbbcode20' => 100,
'message' => $body,
'lastclick' => $lclick[0],
'post' => 'Submit',
'attach_sig' => 'on',
'creation_time' => $lclick[0],
'form_token' => $security123[1],
'filecomment' => '',
);
//Wait (you might also do this by setting lastclick in the past by 3 seconds
sleep(3);
//Set up curl session for posting the message
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL,$purl);
curl_setopt($ch1, CURLOPT_POST, true);
curl_setopt($ch1, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch1, CURLOPT_HEADER, false );
curl_setopt($ch1, CURLOPT_COOKIE,'cookie.txt');
curl_setopt($ch1, CURLOPT_COOKIEJAR,'cookie.txt');
curl_setopt($ch1, CURLOPT_COOKIEFILE,'cookie.txt');
$result2= curl_exec ($ch1);
//$result3= curl_exec ($ch1, CURLOPT_URL,$purl);
curl_close ($ch1);
echo $result2;
回复来自$ result2。页面转到http://servername.com/phpBB3/viewtopic.php?f=5&t=24“。
但问题是这一切都发生在后端。我的项目没有显示phpBB的viewtopic.php页面。
答案 0 :(得分:2)
如果我没弄错的话你应该能够使用PHP来使用$_GET['t']
获取存储在URL中't'变量中的'value'(24)。这仅适用于您当前位于该URL的情况。请参阅:http://us2.php.net/manual/en/reserved.variables.get.php
如果您在不在特定页面上时试图抓住该部分,可以尝试:
ereg("t=[0-9]+", $url, $res)
然后从$ res数组中的结果中删除“t =”
答案 1 :(得分:1)
要从网址中提取组件,您可以使用parse_url
- 好吧,如果您只想获取查询字符串,$_SERVER['QUERY_STRING']
也会很好。
然后,要从查询字符串中获取params /值,您可以查看parse_str
:有一个示例可以显示您想要的内容:
<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
?>
很明显,您可能更喜欢第二种方式,以避免在脚本中注入(未知且有潜在危险,如register_globals
)变量。
答案 2 :(得分:1)
不确定你想要什么,但我可能是愚蠢的。
根据$url
中的网址,你可以这样做:
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $params);
$t = $params['t'];
如果页面传递了GET参数,您可以执行以下操作:
$t = $_GET['t'];
答案 3 :(得分:0)
怎么样:
$var = $_GET['t'];
过滤它并用它做任何事情。