1

myfile.txt我有以下要使用 PHP 显示的单词 ( ) 列表:

 word1
 #word2
 word3

我想要做的是跳过上面以 # 开头的那些行。

下面是我用来显示单词的 PHP 代码。但我不知道如何跳过 # 字。

<?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>

实现这一目标的方法是什么?

4

5 回答 5

2

只需将条件扩展到:

if((strlen($name) > 0) && ($name[0] != '#')){

看一下关于字符串的 php 手册- 部分字符串访问和按字符修改

如果您需要检查更复杂的字符串(如//or --),您可以实现自己的startsWith($haystack, $needle)函数或使用:

  • substr($name, 0, 2) == '//'
  • strpos($name, '//') == 0
于 2013-09-25T06:19:33.633 回答
2
...
$name = fgets($fp);
$name = rtrim($name);
$value = urlencode($name);

if( strpos($value, '#') === 0 ) { continue; }
else // your code with if (strlen ...)

有关更多信息,另请阅读这篇文章:检查变量是否以“http”开头

于 2013-09-25T06:19:38.683 回答
1

你可以用substr 函数检查

if (substr($value,0,1)=="#"){
// do nothing
}

希望这对你有帮助。

于 2013-09-25T06:21:36.227 回答
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>";
    }
  }
 }

于 2013-09-25T06:21:52.290 回答
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";
}
于 2013-09-25T06:25:56.400 回答