2016-05-03 4 views
-1

私は4年前に建てられた古いCMSを引き継ぎます。データをデータベースから取り出し、XMLとして提供します。それはデータの衛生上の点で多くが欠けています。これは、PHP 5.5とMySQLとDoctrineで構築されています。悪いデータをXMLとして解析する際にPHPが死ぬのを避けるために、どうすれば入手できますか?

多くの場合、私たちは感嘆符を持っているデータベースにタイトルを持っている:とりわけ

Stop The Presses! 

、感嘆符は、それがデータをXMLに変換しようとする点に死ぬためにPHPコードを引き起こしているようです。

私たちは今年このソフトウェアを置き換える予定であるため、保存するのではなく、私たちが直面する苦痛を軽減しようとしています。

データを最初にテストし、きちんと解析する方法はありますか?データベースから100個の結果を取得し、1つのレコードに感嘆符がある場合、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

関連する問題