オライリーのプログラミングPHPを読んでいたら、出力のエスケープの項目で、 $value = str_replace('\'', ''', $value); // ' はおすすめしません と書いてた。 理由が書いてなかったので、コンテンツエスケープ規則を見に行った。 XSS (Cross Site Scripting) Prevention Cheat Sheet - OWASP ' not recommended because its not in the HTML spec ' is in the XML and XHTML specs.これによるとaposはXMLとXHTMLでの仕様で、HTMLの仕様じゃないからってことらしい。(Character entity references in HTML 4を参照していた。) HTML4での仕様み