将变量传递到url中

时间:2014-01-05 06:19:53

标签: php css parsing

好吧,我已经被困了几天......一直试图找到一个关于如何将我的变量传递到php代码的url并在每次提交表单时更新url的答案。但是,我发现的所有内容都是如何通过url传递变量...实际上并没有能够实现这个,因为我觉得我需要一个不同的解决方案。 所以这里是代码,除了将$ var传递给URL并重新更新脚本以使用新URL运行之外,一切似乎都正常工作。

例如,原版目前看起来像这样:

    $html = file_get_html('http://www.championselect.net/champ/{$var}');

我希望有人在表单中输入一个条目,并且每次都要更新$ var。

所以:      假设有人想搜索“ziggs”或“jinx”,他们会在表单中输入名称,表单需要更新脚本以使用新的$ var运行解析器。

非常感谢所有帮助!!

<form action="test.php" method="post">
<input type="text" value="<?php echo $var?>" name="var" />
<input type="submit" value="Send" />
</form>
<?php

$var = $_POST['var'];
echo $var;


// Include the library to use it.
include_once('simple_html_dom.php');

// Get div from site. ... Need to implement user selected queries.

$html = file_get_html('http://www.championselect.net/champ/{$var}');

// Put all of the <a> tags into an array named $result
$result = $html -> find('h2,img[class=CS_Champ_Image],.counterName' );

// Run through the array using a foreach loop and print each link out using echo
foreach($result as $element) {
  echo $element."   ";}   

?>

3 个答案:

答案 0 :(得分:5)

...试

$html = file_get_html('http://www.championselect.net/champ/'.$var);

变量不会在单引号内解析

答案 1 :(得分:2)

你的问题就在这一行:

$html = file_get_html('http://www.championselect.net/champ/{$var}');

单引号不处理字符串替换。您可以了解PHP handles strings here的方式。因此,该URL的完整价值 - 包括该文字{$var} - 正在设置,而不是您期望的。您可以通过几种不同的方式解决此问题。比如使用允许字符串替换的双引号:

$html = file_get_html("http://www.championselect.net/champ/{$var}");

或者只是连接这样的值:

$html = file_get_html('http://www.championselect.net/champ/' . $var);

但我更喜欢使用sprintf,它允许您将字符串用作这样的模板:

$html = file_get_html(sprintf('http://www.championselect.net/champ/%s', $var));

除此之外,你的代码有点邋&&amp;不一致,所以这是我的清理。这可能看起来不是什么大问题,但混乱的代码很难阅读,这使得调试变得困难。更清洁的代码可以让您更快地发现缺陷。另外,混合HTML&amp; PHP有点令人困惑。在这样的简单情况下,错误的是代码的大部分内容。在这种情况下,错误只是通过PHP解析它:

<?php

// Echo the form.
echo '<form action="test.php" method="post">'
   . '<input type="text" value="' . $var . '" name="var" />'
   . '<input type="submit" value="Send" />'
   . '</form>'
   ;

// Set the $var variable.
$var = $_POST['var'];

// Include the library to use it.
include_once('simple_html_dom.php');

// Get div from site. ... Need to implement user selected queries.
$html = file_get_html(sprintf('http://www.championselect.net/champ/%s', $var));

// Put all of the <a> tags into an array named $result
$result = $html -> find('h2,img[class=CS_Champ_Image],.counterName' );

// Run through the array using a foreach loop and print each link out using echo
foreach($result as $element) {
  echo $element . " ";
}   

?>

编辑我刚刚注意到了别的东西。看看你的开头的代码或我上面刚刚完成的清理版本:

// Echo the form.
echo '<form action="test.php" method="post">'
   . '<input type="text" value="' . $var . '" name="var" />'
   . '<input type="submit" value="Send" />'
   . '</form>'
   ;

// Set the $var variable.
$var = $_POST['var'];

因此,在<form … > / </form>标记中,您将$var的值放入'<input type="text" value="' . $var . '" name="var" />'。但是,在表单呈现之后,$var没有赋值?所以不应该被删除就像这样吗?

// Echo the form.
echo '<form action="test.php" method="post">'
   . '<input type="text" value="" name="var" />'
   . '<input type="submit" value="Send" />'
   . '</form>'
   ;

答案 2 :(得分:2)

你还可以做的就是这个

$html = file_get_html('http://www.championselect.net/champ?var=' . $var);