我正在尝试从文本文件中创建一个简单的下拉列表...文本文件看起来像这样:
websitename1 http:// websitename1.com
websitename2 http:// websitename2.com
websitename3 http:// websitename3.com
我找不到一个脚本来读取文本文件并且只显示第1列,然后在选中时“跳转”到相关的第2列URL。我已经找到了很多关于如何使用PHP填充下拉列表的示例 - 但是如果选择它们,它们就会“跳转”(点击操作)。
答案 0 :(得分:1)
修改08-20-13 - 添加空白选择选项和JS功能
为避免不必要的正则表达式方法,您应该使用.csv格式而不是.txt。它代表以逗号分隔的值,它允许您将网站名称放在空格中而不需要任何棘手的字符串操作。例如,您的csv可能如下所示:
News,
Website Name 1,http://websitename1.com
Website Name 2,http://websitename2.com
Website Name 3,http://websitename3.com
Events,
Website Name 4,http://websitename4.com
Website Name 5,http://websitename5.com
Website Name 6,http://websitename6.com
一个快速的小片段可能是这样的:
<select id="myselect" onchange="changePage( this.value );">
<option value="" selected>Select Website...</option>
<?php if( ( $file = fopen( 'websites.csv', "r" ) ) !== FALSE ): ?>
<?php while( ( $row = fgetcsv( $file, 0, ',' ) ) !== FALSE ): ?>
<option value="<?php echo $row[1]; ?>"><?php echo $row[0]; ?></option>
<?php endwhile; ?>
<?php endif; ?>
</select>
<script type="text/javascript">
function changePage( url )
{
if( url !== '' )
{
window.open( url, '_blank' );
}
}
</script>
只是一个想法,200个项目的跳转列表可能会非常大。在任何情况下,使这种“跳跃”的主要代码行是:
window.open = ( url, '_blank' );
这会将下拉选项的值传递给窗口位置,并将用户带到所选页面。
警告词
如果由于某种原因需要在网站名称或网址中加上逗号,则需要将其括在csv中。幸运的是,fgetcsv允许您在默认情况下可选地用双引号括起字段。例如:
"Website, Name 4",http://websitename4.com
打印名称变量时会输出Website, Name 4
,并且不会错误地认为Name 4
是下一个字段。
备注:强>
正如评论中提到的OP,文件扩展名不一定是.csv,我这样做是为了与正确的约定保持一致,但它必须遵循相同的文本格式。我给了我的文件几个不同的扩展名(.wmv,.php,.jpg),所有这些扩展看起来都是一样的。最好只调用文件它是什么,并且如下所述,.csv数据将用Excel打开。在新工作簿上使用“从文本文件导入数据”方法,您将能够确保Excel不会通过导入向导设置列数据类型来自动更正列并搞砸数据。
< / LI>正如Fred提出的那样,在代码window.open( this.value, '_blank' )
中,您可以将'_blank'
更改为'_self'
以在同一页面上加载新位置。
Javascript open()参考: http://www.w3schools.com/jsref/met_win_open.asp
课程之类:
如果你想为你的下拉列表提供一些类,你也可以在.csv中为类名添加另一列,并改变它的回声方式。你的csv看起来像这样:
News,,jump-title
Website Name 1,http://websitename1.com,jump-link
Website Name 2,http://websitename2.com,jump-link
Website Name 3,http://websitename3.com,jump-link
Events,,jump-title
Website Name 4,http://websitename4.com,jump-link
Website Name 5,http://websitename5.com,jump-link
Website Name 6,http://websitename6.com,jump-link
现在我们有3个字段,Name,Url,Class
现在修改以下行
发件人:强>
<option value="<?php echo $row[1]; ?>"><?php echo $row[0]; ?></option>
要强>
<option value="<?php echo $row[1]; ?>" class="<?php echo $row[2]; ?>"><?php echo $row[0]; ?></option>
这样您就可以使用CSS类添加一些文本格式,这样您的用户就可以直观地区分链接和标题。