strpos () не находит "//"? - PullRequest
0 голосов
/ 17 июня 2011

вот страница: [Я удалил URL, он больше не существует]

моя проблема в том, что комментарии в файле data.bdf не форматируются, за исключением первого.

это php:

<html>
<head>
<title>Text Database Editor</title>
<style type="text/css">
span.comment {
    color:green;
}
</style>
<script type="text/javascript">
function setURLValue() {
    document.getElementById("url").value=window.location;
}
</script>
</head>
<body onLoad="setURLValue();">
<?php
function interpret($fileline) {
    for ($count=1;!empty($fileline[$count]);$count++) {
        if (strpos($fileline[$count],"//")==0) {
            $fileline[$count]=substr($fileline[$count],2);
            $fileline[$count]="<span class=\"comment\">".$fileline[$count]."</span>";
        }
        return $fileline;
    }
}
$filepath = "data.bdf";
$filesize = @filesize($filepath);
if (!empty($filesize)) {
    echo "File being opened contains ".$filesize." bytes of data. Opening file...<br />";
}
else {
    echo "Error in determining file size. ";
}
$handle = @fopen($filepath, "r") or die("File could not be opened");
echo "File Opened!<br />";
$filedata = fread($handle, $filesize+1) or die("File could not be read");
echo "File Read!<br /><br />Data in file:<br /><br />";
$fileline = explode("`",$filedata);
$fileline = interpret($fileline);
for ($count=1;!empty($fileline[$count]);$count++) {
    echo $count.": ".$fileline[$count]."<br />";
}
?>
<br />Write to file:
<form name="writeto" action="write_to_file.php" method="post">
<input type="hidden" name="formurl" id="url" />
<input type="hidden" name="file" value="<?php echo $filepath;?>" />
<input type="radio" name="iscomment" value="Yes" />Comment
<input type="radio" name="iscomment" value="No" />Data<br />
Text: <input type="text" name="text" />
<input type="submit" />
</form>
</body>
</html>
<?php fclose($handle);?>

Спасибо за помощь ...

Кстати, у меня больше нет ошибки при записи дважды

Ответы [ 2 ]

3 голосов
/ 17 июня 2011

Оператор return в interpret() находится не в том месте. Должно быть вне цикла:

function interpret($fileline) {
    for ($count=1;!empty($fileline[$count]);$count++) {
        if (strpos($fileline[$count],"//")===0) {
            $fileline[$count]=substr($fileline[$count],2);
            $fileline[$count]="<span class=\"comment\">".$fileline[$count]."</span>";
        }
    }
    return $fileline;
}
3 голосов
/ 17 июня 2011

Вы должны использовать !== false, т.е.

if (strpos($fileline[$count], "//" ) !== false) {
...