Вы должны переназначить свою переменную str:
for char in line:
if char in " ?.!/;:":
line = line.replace(char,'')
EDIT
На самом деле, я просто понял, что «ошибка», о которой вы говорите, включает эхо / распечатку. Вот проблема.
Вы print
ing (echo
ing) ошибка строки ПРЯМО СЛЕДУЕТ В выходной буфер (который отправляет HTML в браузер, когда вы закончите выполнение всего вашего кода) , echo()
и print()
отправляют то, что вы эхом / печатаете прямо, если только оно не находится в блоке output_buffer
(я не буду путать вас с подробностями об этом).
Итак, вы управляя вашим обычным html / текстовым выходом таким образом, чтобы НЕ print
содержимое страницы выводилось в выходной буфер, но в этом случае вы используете echo
, который отправляет строковые данные непосредственно в буфер AT THAT MOMENT .
Например:
Ваша проблема в простом примере
<?php
$mystr = "<html>";
$mystr .= "<body><h1>Hello World</h1></body></html>";
echo "<head></head>";
echo $mystr;
?>
Который дал бы мне вывод в браузер :
<head></head><html><body><h1>Hello World</h1></body></html>
Я храню строковые данные, но echo
в блоке HEAD до того, как я echo
выложил другие html-данные.
Что мне нужно сделать:
<?php
$mystr = "<html>";
$mystr .= "<head></head>";
$mystr .= "<body><h1>Hello World</h1></body></html>";
echo $mystr;
?>
Который дал бы мне вывод в браузер:
<html><head></head><body><h1>Hello World</h1></body></html>
Я сохраняю вывод строки (ваша ошибка в этом случае), пока мне не нужно будет выводить ее позже. Это то, что вам нужно знать и выполнить в вашем коде.
Я бы исследовал error_reporting(0)
/ display_errors
, error_get_last
и set_error_handler
.
http://www.php.net/manual/en/function.error-reporting.php
http://www.php.net/manual /en/errorfunc.configuration.php#ini.display-errors
http://php.net/manual/en/function.error-get-last.php
http://www.php.net/manual/en/function.set-error-handler.php
Чтобы вы может прекратить немедленно отправлять все ошибки в выходной буфер (поэтому он находится в верхней части страницы), а затем захватывать, хранить и представлять ваши ошибки.
error_reporting(0);
set_error_handler('phpLogError');
function phpLogError() {
$error = error_get_last();
if ($error['type'] == 1) {
//do your stuff
}
}
function phpGetLoggedErrors() {
// return your prettified html errors
}
Или, другими словами .. .
php_error_handle.php
<?php
$GLOBAL['_logged_php_errors'] = array();
error_reporting(0);
set_error_handler('phpLogError');
function phpLogError() {
global $_logged_php_errors;
$error = error_get_last();
if ($error['type'] == 1) {
$_logged_php_errors[] = "<span>$error</span>";
}
}
function phpGetLoggedErrors() {
global $_logged_php_errors;
return "<ol><li>".implode('</li><li>',$_logged_php_errors)."</li></ol>";
}
?>
other.php
<?php
require_once 'php_error_handle.php';
// other stuff, pages included/required, etc...
Просто убедитесь, что this require_once происходит в первой строке кода.
Отображение ошибок на экране должно быть полностью подавлено при запуске в процессе производства, а затем записывать их в файл для проверки и исправления. В файле php.ini имеются подробные сведения и рекомендуемые настройки.
echo '<div class="yourerrorclass">error, please do something!</div>';
Если на выходе это не так, это связано с тем, что вы слишком быстро выдаете ошибку. Весь HTML выводится последовательно PHP. Если вы выведете ошибку перед любым другим HTML, ошибка будет в верхней части страницы и фактически сделает ваш HTML недействительным.
Вы можете использовать следующие настройки php.ini
:
error_prepend_string = "<div class='error'>"
error_append_string = "</div>"
Или что-то в этом роде.
Расширение @mario выше, я использовал это в верхней части моего php-файла (в dev, а не в производстве, конечно!), который отлично работает. Даже в файлах администратора Wordpress!
ini_set('error_prepend_string',"<div class='error'>") ;
ini_set('error_append_string',"</div>") ;
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Try...catch
http://php.net/manual/en/language.exceptions.php
Вы можете сделать эхо-сообщение ошибки в своем собственном css.