-- システムは MySQL、PHP、Apache であり、コードは Codeigniter フレームワークを中心に構築されています。
明確にするために編集:データを保存していません。数年前に保存されたデータを取得しようとしています(エスケープされたデータとしてひどく)。データベースでは、Fred' という名前は Fred' として保存されていますが、htmlspecialcahrs を使用して Fred' を変換すると、Fred' として出力されます。私の質問は、Fred を Fred' やその他の同等のものに変換するにはどうすればよいですか?
元の質問
別のシステム (正確には Invision Power Board) からデータベースを継承しました。このサイトは現在、Codeigniter を使用してカスタム コード化されていますが、古い Invision Power Board サイトと同じメンバー データベースを使用しています。
ユーザーの名前にアポストロフィが含まれている場合、たとえば "Fred'" codeigniter の組み込み html_escape 関数 (htmlspecialchars のみを使用) がそれを Fred に変換するという問題を発見しました'
しかし、データベースには名前が Fred' として保存されているため、ルックアップは失敗します。
Invision Power Board が文字列をデータベースに挿入する前に何をしていたかはわかりませんが、 ' ではなく ' に確実に変換する方法を知っている人はいますか?
ユーザー名には何百もの可能性があるため、単に str_replace を実行したり、データベース内のデータを変更したりするだけでは役に立ちません。名前に # が含まれるユーザー (おそらく特殊文字) をすばやく検索すると、このバグが原因でサイトに現在ログインできない 440 人のユーザーが表示されます。
編集:「;」を削除するためにいくつかのフォーマットを修正しました アポストロフィを表示するだけではありません