好吧,我已经被困了几天......一直试图找到一个关于如何将我的变量传递到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." ";}
?>
答案 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);