2017-03-10 16 views
0

我在我的网站上有一个php表单。表格最终会生成用户提交的文章。需要PHP回声才能在缓冲区上生成文本超链接

表单中的一个数据字段是一个下拉菜单,用户可以选择它们代表的出版物。

目前,如果我只是试图显示其出版物的名称,表单的工作原理。

但是...我也想这个名字是一个可点击的链接到他们各自的出版物。

在试图做到这一点,我将我的表格像这样:

Form: <select name="publication" id="publication"> 
      <option value="http://www.espn.com">ESPN</option> 
      <option value="http://www.cnn.com">CNN</option> 
      <option value="http://www.abcnews.com">ABC</option> 
      <option value="http://www.cbsnews.com">CBS</option> 
      <option value="http://www.foxnews.com">FOX</option> 
      </select> 

和回声设置是这样的:

Echo: 

    <?php $publication = htmlspecialchars($_POST['publication']); echo $publication; ?> 

不幸的是,结果产生的完整URL而不是我试图实现的文本链接。

不知道我该如何编码窗体或回声来实现所需的可点击文本链接。

回答

0

$_POST['publication']的值将被选为<option>value,而不是显示名称。

如果你想显示的名称沿链路,考虑编码出版物清单为静态数组,然后输出是:

$publications = [ 
    "media1" => "link", 
    "media2" => "link" 
] 

if (array_key_exists($_POST["publication"], $publications)) { 
    echo '<a href="' . $publications[$_POST["publication"]] . '">' . htmlspecialchars($_POST["publication"]) . '</a>'; 
} 
+0

所以..在你的建议tyteen ...不包括表单中的链接部分,然后在echo数组中设置引用? name = link? –

+0

当我试图将其插入我的代码时,会产生各种代码错误。 –

+0

你得到什么错误? (阵列定义语法是PHP 5.4+;如果你不上PHP 7你真的应该升级) – tyteen4a03

0

它走的是价值的选择,而不是innerHTML之中。一种解决方法是使值如下:

<a href='http://example.org'>Example</a> 

注意:您可能需要转义字符才能工作。

+0

这似乎是我寻求的简单解决方案。我会试试这个,然后回来发布结果。多谢你们。 –

+0

不幸的是...只是插入上面的例子,没有工作。它产生了

+0

尝试删除htmlspecialcharactors的东西。这可能是问题。 –