我有以下要显示的单词列表(myfile.txt
)
使用PHP:
word1
#word2
word3
我想要做的是跳过那些以#above开头的行。
下面是我用来显示单词的PHP代码。 但我不知道如何跳过#word。
<?php
$fp = fopen('myfile.txt','r');
if($fp){
while(!feof($fp)){
$name = fgets($fp);
$name = rtrim($name);
$value = urlencode($name);
if(strlen($name) > 0){
echo "<option value=$value>$name</option>";
}
}
}
?>
</select>
</td>
实现这一目标的方法是什么?
答案 0 :(得分:2)
只需将条件扩展到:
if((strlen($name) > 0) && ($name[0] != '#')){
查看php manual on strings - section 字符串访问和按字符修改。
如果您需要检查更复杂的字符串(例如//
或--
),您可以实现自己的startsWith($haystack, $needle)
功能或使用:
substr($name, 0, 2) == '//'
strpos($name, '//') == 0
答案 1 :(得分:2)
...
$name = fgets($fp);
$name = rtrim($name);
$value = urlencode($name);
if( strpos($value, '#') === 0 ) { continue; }
else // your code with if (strlen ...)
有关详细信息,请阅读本文:Check if variable starts with 'http'
答案 2 :(得分:1)
答案 3 :(得分:1)
使用以下
$fp = fopen('myfile.txt','r');
if($fp){
while(!feof($fp)){
$name = fgets($fp);
$name = rtrim($name);
$value = urlencode($name);
if(strlen($name) > 0 && $name[0]!='#'){
echo "<option value=$value>$name</option>";
}
}
}
答案 4 :(得分:1)
你可以这样做:
$f = file("myfile.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($f as $l) {
if (strpos($l, '#') === 0)
continue;
$line = htmlspecialchars($l);
echo "<option value=\"" . addslashes($line) . "\">$line</option>\n";
}