在PHP中跳过以#开头的单词

时间:2013-09-25 06:16:08

标签: php html web

我有以下要显示的单词列表(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>

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

5 个答案:

答案 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)

您可以查看substr function

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

希望这一定会对你有所帮助。

答案 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";
}