Я использую fopen
в PHP, чтобы открыть файл, извлеченный из OCR tesseract. Возвращаемый текст содержит <<<<<<
, fopen
читается до тех пор, пока не найдет первый символ <
, а затем останавливается.
Файл возвращен из OCR:
P<dsdasdasd<<dasd<adsda<dsada<<<<<<<<<<ec<
dasdasdsdasdasdasdasd<<<<<<<<<<<<<<06
£ y
Эхо от fopen
:
P
Если я просматриваю исходный текст, я нахожу оставшийся текст красным цветом.
Код, который я использовал:
<?php
file_put_contents("tmpFile.jpg",file_get_contents("1.jpg"));
$cmd = "tesseract tmpFile.jpg ee ";
exec($cmd);
$myfile = fopen("ee.txt", "r") or die("Unable to open file!");
$data= fread($myfile,100000000);
fclose($myfile);
echo $data;
?>
Я вставляю текст, о котором идет речь, и он также скрыт.
Скриншот, когда я набираю вопрос и текст, скрытый в вопросе:
Скриншот из вывода и источника просмотра:
Насколько я вижу, проблема не имеет ничего общего с tesseract или вашим входным текстовым файлом.
fopen
reads till it finds the first < character then stops
Я не думаю, что это правда. Почему тогда вы видите остальную часть источника в «просмотре источника»? fopen
читает весь файл, но проблема заключается в отображении этой информации в вашем браузере.
Вы хотите отображать символы, зарезервированные для HTML-тегов — в данном случае это <
(«символ меньше»). Вот почему вы получаете красный текст в «просмотре исходного кода», поскольку браузер не знает, как интерпретировать HTML-код.
В качестве первого обходного пути просто поместите тег <textarea>
вокруг <?php
, чтобы просмотреть данные:
<textarea><?php
/* ...
your regular code here
... */
?></textarea>
Следующим шагом должно быть кодирование этих специальных символов, прежде чем вы отдадите их echo
. Взгляните на htmlspecialchars
или htmlentities
.
Вы также можете найти полезную информацию по теме на:
Думаю, вы должны использовать
htmlentities
, чтобы вы могли безопасно отображать любые данные.