从文本输入中识别特定字符

时间:2010-02-03 06:24:13

标签: php

原标题
读取并计算输入文本文件中仅出现的有限字符A,G,C,T,例如500个中只有100个,并使用gd <绘制一个薄的垂直矩形条形码图像/ p>

它只读取并计算前10个字符并绘制条形码图像,而不是指定100个字符。

<?php
$file="co3.txt";
$handle=fopen($file, 'r');

$A=0;
$G=0;
$C=0;
$T=0;

$img = imagecreate(850,80);
$white = imagecolorallocate($img, 255,255,255);
$green=imagecolorallocate($img, 0, 128, 0);
$black=imagecolorallocate($img, 0, 0, 0);
$red=imagecolorallocate($img, 255, 0, 0);
$blue=imagecolorallocate($img, 0, 0, 255);

$x1=40;
$y1=40;
$x2=43;
$y2=80;

$contents = '';

#while(( ($contents=fread( $handle, 100)) !='')) {
while(( ($contents=fread($handle, 100)) )) {
for ($i=0; $i<=100; $i++)

{

  if($contents[$i] == 'A')
{

$A++;
imagefilledrectangle($img, $x1, $y1, $x2, $y2, $green);
$x1 = $x1+6;
$x2 = $x2+6;

}

else
if($contents[$i] == 'G')

{

$G++;
imagefilledrectangle($img, $x1, $y1, $x2, $y2, $black);
$x1 = $x1+6;
$x2 = $x2+6;

}

else
if($contents[$i] == 'C')

{

$C++;
imagefilledrectangle($img, $x1, $y1, $x2, $y2, $blue);
$x1 = $x1+6;
$x2 = $x2+6;

}

else
if($contents[$i] == 'T')

{

$T++;
imagefilledrectangle($img, $x1, $y1, $x2, $y2, $red);
$x1 = $x1+6;
$x2 = $x2+6;

header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
}

}

}

?>

1 个答案:

答案 0 :(得分:0)

我猜你的前10个字母不是那么多,而是直到发现T的时候。然后,产生图像的错位片段将输出此图像。循环可能会持续到100,可能会产生更多的图像(每个新的T),但在这种情况下我不知道PHP行为,因为一些HTTP响应很容易写出来......

或者您可能会看到这些图像的最后。无论如何,通过修复错位的

header("Content-type: image/png");
imagepng($img);
imagedestroy($img);

事情应该开始看起来更像预期。