2016-05-03 1 views
-1

Я беру на себя старую CMS, которая была построена 4 года назад. Он извлекает данные из базы данных и служит им как XML. Этому не хватает средств для санитарии данных. Он построен с использованием PHP 5.5, MySQL и Doctrine.Как я могу заставить PHP избежать смерти при анализе плохих данных как XML?

Часто мы имеем название в базе данных, которые имеют восклицательный знак:

Stop The Presses! 

Среди других вещей, восклицательный знак, кажется, вызывают PHP код, чтобы умереть на месте, где он пытается преобразовать данные в XML ,

Мы планируем заменить это программное обеспечение в этом году, поэтому вместо того, чтобы сохранять его, мы просто пытаемся уменьшить боль, с которой мы сталкиваемся.

Есть ли способ для первого тестирования данных и убедиться, что он будет анализировать чисто? Если я верну 100 результатов из базы данных, и у одной записи есть восклицательный знак, я должен иметь возможность перебирать 100 записей и правильно анализировать 99.

Есть ли способ сделать это?

+2

Вы должны оставить свой код. Если восклицательный знак в поле db вызывает ошибку, это, вероятно, связано с самим кодом. – fusion3k

+0

Мой код кроме того. Я спрашиваю, как это сделать на PHP. Я в основном работаю на других языках. Я знаю, как справиться с этим в Clojure. Но мне нужен совет, как это сделать в PHP. – lorm

+0

Мы не можем помочь вам без минимального, полного и проверяемого примера. Если вы используете код, кроме того, вы находитесь на неправильном сайте. – fusion3k

ответ

1

Вы должны быть в состоянии сделать это с помощью блока try/catch. Если у вас есть код, который может вызвать ошибку в восклицательном знаке, сделайте следующее:

try { 
    // code for checking data 
} 
catch (Exception $e) { 
    // other code when data has exclamation 
    // point and error is thrown 
} 
+0

Нет, try/catch не работает, потому что ошибка не является исключением. У меня есть код, завернутый в try/catch, но он не имеет никакого эффекта. Когда библиотека XML сталкивается с плохими данными, которые не могут быть проанализированы, она выдает ошибку, но не исключение. – lorm

Смежные вопросы