質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • PHP

    20307questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    5844questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • SQL

    2387questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • EC-CUBE

    285questions

    EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

特殊文字のif文

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 910

Buakaw

score 226

会員登録時に特殊文字の入力チェックをしたいです。

PHPで、
case 'SPECIAL_CHARCTER'
if($value == ''){ //仮
  $arrErr[$key] = '※ ' . $this->disp_name[$index] . 'に特殊文字が含まれています。<br>';
}
break;
のifの箇所に、preg_matchを使用してHTML特殊文字のチェックを行いたいです。

調べましたが、四苦八苦しています。。

アドバイスをいただけませんか?
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Kosuke_Shibuya

    2015/11/13 19:43

    特殊文字とはどのようなものを想定していますか? http://www.htmq.com/text/

    キャンセル

  • Buakaw

    2015/11/13 20:02

    ありがとうございます。 こちらの中の文字になります。 http://pst.co.jp/powersoft/html/index.php?f=3401 例) é

    キャンセル

回答 1

checkベストアンサー

0

http://pst.co.jp/powersoft/html/index.php?f=3401
の文字がフォームから入力されたとしても、検索でヒットしないということは起こりません。
DBに書き込みする際に、htmlspecialchars を通してしまっているなどのアンチパターンで実装してはいませんか?


これで普通にヒットしましたげど…とおもったら、なんか動きおかしいですね

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

$pattern = "/[\"&<> ¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸]/";
$subject = "\"&<> ¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸";

preg_match_all($pattern, $subject, $matches);
?>
<!DOCTYPE HTML>
<html lang="ja-JP">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        var_dump($subject);
        ?>
        <?php
        foreach ($matches[0] as $i => $match) {
            echo sprintf("%d:%s %s<br />"
                , $i
                , $match
                , htmlentities($match, ENT_SUBSTITUTE, 'UTF-8')
            );
        }
        ?>
    </body>
</html>


いろいろ試したけど、結局、これが使いやすい気がします。

<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);

$strings = [
    " ", " ", "!", "\"", "#", "$", "%", "&", "'",
    "(", ")", "*", "+", ",", ".", "/", ":", ";",
    "<", "&nvlt", "=", "&bne", ">", "&nvgt", "?",
    "@", "[", "\\", "]", "^", "_", "`", "&fjlig",
    "{", "|", "}", " ", "¡", "¢", "£", "¤", "¥",
    "¦", "§", "¨", "©", "ª", "«", "¬", "­", "®",
    "¯", "°", "±", "²", "³", "´", "µ", "¶", "·",
    "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À",
    "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É",
    "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò",
    "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û",
    "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä",
    "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í",
    "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö",
    "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ",
    "Ā", "ā", "Ă", "ă", "Ą", "ą", "Ć", "ć", "Ĉ",
    "ĉ", "Ċ", "ċ", "Č", "č", "Ď", "ď", "Đ", "đ",
    "Ē", "ē", "Ė", "ė", "Ę", "ę", "Ě", "ě", "Ĝ",
    "ĝ", "Ğ", "ğ", "Ġ", "ġ", "Ģ", "Ĥ", "ĥ", "Ħ",
    "ħ", "Ĩ", "ĩ", "Ī", "ī", "Į", "į", "İ", "ı",
    "IJ", "ij", "Ĵ", "ĵ", "Ķ", "ķ", "ĸ", "Ĺ", "ĺ",
    "Ļ", "ļ", "Ľ", "ľ", "Ŀ", "ŀ", "Ł", "ł", "Ń",
    "ń", "Ņ", "ņ", "Ň", "ň", "ʼn", "Ŋ", "ŋ", "Ō",
    "ō", "Ő", "ő", "Œ", "œ", "Ŕ", "ŕ", "Ŗ", "ŗ",
    "Ř", "ř", "Ś", "ś", "Ŝ", "ŝ", "Ş", "ş", "Š",
    "š", "Ţ", "ţ", "Ť", "ť", "Ŧ", "ŧ", "Ũ", "ũ",
    "Ū", "ū", "Ŭ", "ŭ", "Ů", "ů", "Ű", "ű", "Ų",
    "ų", "Ŵ", "ŵ", "Ŷ", "ŷ", "Ÿ", "Ź", "ź", "Ż",
    "ż", "Ž", "ž", "ƒ", "Ƶ", "ǵ", "ȷ", "ˆ", "ˇ",
    "˘", "˙", "˚", "˛", "˜", "˝", "̑", "Α", "Β",
    "Γ", "Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ", "Λ",
    "Μ", "Ν", "Ξ", "Ο", "Π", "Ρ", "Σ", "Τ", "Υ",
    "Φ", "Χ", "Ψ", "Ω", "α", "β", "γ", "δ", "ε",
    "ζ", "η", "θ", "ι", "κ", "λ", "μ", "ν", "ξ",
    "ο", "π", "ρ", "ς", "σ", "τ", "υ", "φ", "χ",
    "ψ", "ω", "ϑ", "ϒ", "ϕ", "ϖ", "Ϝ", "ϝ", "ϰ",
    "ϱ", "ϵ", "϶", "Ё", "Ђ", "Ѓ", "Є", "Ѕ", "І",
    "Ї", "Ј", "Љ", "Њ", "Ћ", "Ќ", "Ў", "Џ", "А",
    "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "Й",
    "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т",
    "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы",
    "Ь", "Э", "Ю", "Я", "а", "б", "в", "г", "д",
    "е", "ж", "з", "и", "й", "к", "л", "м", "н",
    "о", "п", "р", "с", "т", "у", "ф", "х", "ц",
    "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я",
    "ё", "ђ", "ѓ", "є", "ѕ", "і", "ї", "ј", "љ",
    "њ", "ћ", "ќ", "ў", "џ", "‐", "–", "—", "―",
    "‖", "‘", "’", "‚", "“", "”", "„", "†", "‡",
    "•", "‥", "…", "‰", "‱", "′", "″", "‴", "‵",
    "‹", "›", "‾", "⁁", "⁃", "⁄", "⁏", "⁗", " ",
    "&ThickSpace", "⁠", "⁡", "⁢", "⁣", "€", "⃛", "⃜",
    "ℂ", "℅", "ℊ", "ℋ", "ℌ", "ℍ", "ℎ", "ℏ", "ℐ",
    "ℑ", "ℒ", "ℓ", "ℕ", "№", "℗", "℘", "ℙ", "ℚ",
    "ℛ", "ℜ", "ℝ", "℞", "™", "ℤ", "℧", "ℨ", "℩",
    "ℬ", "ℭ", "ℯ", "ℰ", "ℱ", "ℳ", "ℴ", "ℵ", "ℶ",
    "ℷ", "ℸ", "ⅅ", "ⅆ", "ⅇ", "ⅈ", "⅓", "⅔", "⅕",
    "⅖", "⅗", "⅘", "⅙", "⅚", "⅛", "⅜", "⅝", "⅞",
    "←", "↑", "→", "↓", "↔", "↕", "↖", "↗", "↘",
    "↙", "↚", "↛", "↝", "&nrarrw", "↞", "↟", "↠",
    "↡", "↢", "↣", "↤", "↥", "↦", "↧", "↩", "↪",
    "↫", "↬", "↭", "↮", "↰", "↱", "↲", "↳", "↵",
    "↶", "↷", "↺", "↻", "↼", "↽", "↾", "↿", "⇀",
    "⇁", "⇂", "⇃", "⇄", "⇅", "⇆", "⇇", "⇈", "⇉",
    "⇊", "⇋", "⇌", "⇍", "⇎", "⇏", "⇐", "⇑", "⇒",
    "⇓", "⇔", "⇕", "⇖", "⇗", "⇘", "⇙", "⇚", "⇛",
    "⇝", "⇤", "⇥", "⇵", "⇽", "⇾", "⇿", "∀", "∁",
    "∂", "&npart", "∃", "∄", "∅", "∇", "∈", "∉",
    "∋", "∌", "∏", "∐", "∑", "−", "∓", "∔", "∖",
    "∗", "∘", "√", "∝", "∞", "∟", "∠", "&nang",
    "∡", "∢", "∣", "∤", "∥", "∦", "∧", "∨", "∩",
    "&caps", "∪", "&cups", "∫", "∬", "∭", "∮",
    "∯", "∰", "∱", "∲", "∳", "∴", "∵", "∶", "∷",
    "∸", "∺", "∻", "∼", "&nvsim", "∽", "&race",
    "∾", "&acE", "∿", "≀", "≁", "≂", "&nesim", "≃",
    "≄", "≅", "≆", "≇", "≈", "≉", "≊", "≋", "&napid",
    "≌", "≍", "&nvap", "≎", "&nbump", "≏", "&nbumpe",
    "≐", "&nedot", "≑", "≒", "≓", "≔", "≕", "≖",
    "≗", "≙", "≚", "≜", "≟", "≠", "≡", "&bnequiv",
    "≢", "≤", "&nvle", "≥", "&nvge", "≦", "&nlE", "≧",
    "&NotGreaterFullEqual", "≨", "&lvertneqq", "≩",
    "&gvertneqq", "≪", "&nLtv", "&nLt", "≫",
    "&NotGreaterGreater", "&nGt", "≬", "≭", "≮", "≯",
    "≰", "≱", "≲", "≳", "≴", "≵", "≶", "≷", "≸", "≹",
    "≺", "≻", "≼", "≽", "≾", "≿", "&NotSucceedsTilde",
    "⊀", "⊁", "⊂", "&vnsub", "⊃", "&nsupset", "⊄", "⊅",
    "⊆", "⊇", "⊈", "⊉", "⊊", "&vsubne", "⊋", "&vsupne",
    "⊍", "⊎", "⊏", "&NotSquareSubset", "⊐", "&NotSquareSuperset",
    "⊑", "⊒", "⊓", "&sqcaps", "⊔", "&sqcups", "⊕", "⊖",
    "⊗", "⊘", "⊙", "⊚", "⊛", "⊝", "⊞", "⊟", "⊠", "⊡",
    "⊢", "⊣", "⊤", "⊥", "⊧", "⊨", "⊩", "⊪", "⊫", "⊬",
    "⊭", "⊮", "⊯", "⊰", "⊲", "⊳", "⊴", "&nvltrie", "⊵",
    "&nvrtrie", "⊶", "⊷", "⊸", "⊹", "⊺", "⊻", "⊽", "⊾",
    "⊿", "⋀", "⋁", "⋂", "⋃", "⋄", "⋅", "⋆", "⋇", "⋈",
    "⋉", "⋊", "⋋", "⋌", "⋍", "⋎", "⋏", "⋐", "⋑", "⋒",
    "⋓", "⋔", "⋕", "⋖", "⋗", "⋘", "&nLl", "⋙", "&nGg",
    "⋚", "&lesg", "⋛", "&gesl", "⋞", "⋟", "⋠", "⋡", "⋢",
    "⋣", "⋦", "⋧", "⋨", "⋩", "⋪", "⋫", "⋬", "⋭", "⋮",
    "⋯", "⋰", "⋱", "⋲", "⋳", "⋴", "⋵", "¬indot", "⋶",
    "⋷", "⋹", "¬inE", "⋺", "⋻", "⋼", "⋽", "⋾", "⌅", "⌆",
    "⌈", "⌉", "⌊", "⌋", "⌌", "⌍", "⌎", "⌏", "⌐", "⌒",
    "⌓", "⌕", "⌖", "⌜", "⌝", "⌞", "⌟", "⌢", "⌣", "⌭",
    "⌮", "⌶", "⌽", "⌿", "⍼", "⎰", "⎱", "⎴", "⎵", "⎶",
    "⏜", "⏝", "⏞", "⏟", "⏢", "⏧", "␣", "Ⓢ", "─", "│",
    "┌", "┐", "└", "┘", "├", "┤", "┬", "┴", "┼", "═",
    "║", "╒", "╓", "╔", "╕", "╖", "╗", "╘", "╙", "╚",
    "╛", "╜", "╝", "╞", "╟", "╠", "╡", "╢", "╣", "╤",
    "╥", "╦", "╧", "╨", "╩", "╪", "╫", "╬", "▀", "▄",
    "█", "░", "▒", "▓", "□", "▪", "▫", "▭", "▮", "▱",
    "△", "▴", "▵", "▸", "▹", "▽", "▾", "▿", "◂", "◃",
    "◊", "○", "◬", "◯", "◸", "◹", "◺", "◻", "◼", "★",
    "☆", "☎", "♀", "♂", "♠", "♣", "♥", "♦", "♪", "♭",
    "♮", "♯", "✓", "✗", "✠", "✶", "❘", "❲", "❳", "⟈",
    "⟉", "⟦", "⟧", "⟨", "⟩", "⟪", "⟫", "⟬", "⟭", "⟵",
    "⟶", "⟷", "⟸", "⟹", "⟺", "⟼", "⟿", "⤂", "⤃",
    "⤄", "⤅", "⤌", "⤍", "⤎", "⤏", "⤐", "⤑", "⤒", "⤓",
    "⤖", "⤙", "⤚", "⤛", "⤜", "⤝", "⤞", "⤟", "⤠", "⤣",
    "⤤", "⤥", "⤦", "⤧", "⤨", "⤩", "⤪", "⤳", "&nrarrc",
    "⤵", "⤶", "⤷", "⤸", "⤹", "⤼", "⤽", "⥅", "⥈", "⥉",
    "⥊", "⥋", "⥎", "⥏", "⥐", "⥑", "⥒", "⥓", "⥔", "⥕",
    "⥖", "⥗", "⥘", "⥙", "⥚", "⥛", "⥜", "⥝", "⥞", "⥟",
    "⥠", "⥡", "⥢", "⥣", "⥤", "⥥", "⥦", "⥧", "⥨", "⥩",
    "⥪", "⥫", "⥬", "⥭", "⥮", "⥯", "⥰", "⥱", "⥲", "⥳",
    "⥴", "⥵", "⥶", "⥸", "⥹", "⥻", "⥼", "⥽", "⥾", "⥿",
    "⦅", "⦆", "⦋", "⦌", "⦍", "⦎", "⦏", "⦐", "⦑", "⦒", "⦓",
    "⦔", "⦕", "⦖", "⦚", "⦜", "⦝", "⦤", "⦥", "⦦", "⦧",
    "⦨", "⦩", "⦪", "⦫", "⦬", "⦭", "⦮", "⦯", "⦰", "⦱",
    "⦲", "⦳", "⦴", "⦵", "⦶", "⦷", "⦹", "⦻", "⦼", "⦾",
    "⦿", "⧀", "⧁", "⧂", "⧃", "⧄", "⧅", "⧉", "⧍", "⧎",
    "⧏", "&NotLeftTriangleBar", "⧐", "&NotRightTriangleBar",
    "⧜", "⧝", "⧞", "⧣", "⧤", "⧥", "⧫", "⧴", "⧶", "⨀", "⨁",
    "⨂", "⨄", "⨆", "⨌", "⨍", "⨐", "⨑", "⨒", "⨓", "⨔", "⨕",
    "⨖", "⨗", "⨢", "⨣", "⨤", "⨥", "⨦", "⨧", "⨩", "⨪", "⨭",
    "⨮", "⨯", "⨰", "⨱", "⨳", "⨴", "⨵", "⨶", "⨷", "⨸", "⨹",
    "⨺", "⨻", "⨼", "⨿", "⩀", "⩂", "⩃", "⩄", "⩅", "⩆", "⩇",
    "⩈", "⩉", "⩊", "⩋", "⩌", "⩍", "⩐", "⩓", "⩔", "⩕", "⩖",
    "⩗", "⩘", "⩚", "⩛", "⩜", "⩝", "⩟", "⩦", "⩪", "⩭",
    "&ncongdot", "⩮", "⩯", "⩰", "&napE", "⩱", "⩲", "⩳", "⩴",
    "⩵", "⩷", "⩸", "⩹", "⩺", "⩻", "⩼", "⩽", "&nles", "⩾",
    "&nges", "⩿", "⪀", "⪁", "⪂", "⪃", "⪄", "⪅", "⪆", "⪇",
    "⪈", "⪉", "⪊", "⪋", "⪌", "⪍", "⪎", "⪏", "⪐", "⪑", "⪒",
    "⪓", "⪔", "⪕", "⪖", "⪗", "⪘", "⪙", "⪚", "⪝", "⪞", "⪟",
    "⪠", "⪡", "&NotNestedLessLess", "⪢", "&NotNestedGreaterGreater",
    "⪤", "⪥", "⪦", "⪧", "⪨", "⪩", "⪪", "⪫", "⪬", "&smtes",
    "⪭", "&lates", "⪮", "⪯", "&NotPrecedesEqual", "⪰",
    "&NotSucceedsEqual", "⪳", "⪴", "⪵", "⪶", "⪷", "⪸", "⪹",
    "⪺", "⪻", "⪼", "⪽", "⪾", "⪿", "⫀", "⫁", "⫂", "⫃", "⫄",
    "⫅", "&nsubE", "⫆", "&nsupseteqq", "⫇", "⫈", "⫋", "&vsubnE",
    "⫌", "&varsupsetneqq", "⫏", "⫐", "⫑", "⫒", "⫓", "⫔", "⫕",
    "⫖", "⫗", "⫘", "⫙", "⫚", "⫛", "⫤", "⫦", "⫧", "⫨", "⫩",
    "⫫", "⫬", "⫭", "⫮", "⫯", "⫰", "⫱", "⫲", "⫳", "⫽", "&nparsl",
    "ff", "fi", "fl", "ffi", "ffl"
];
$entities = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES | ENT_HTML5, 'UTF-8');

foreach ($strings as $str) {
    if (array_key_exists($str, $entities)) {
        echo $entities[$str] . PHP_EOL;
    }
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/13 20:11 編集

    ありがとうございます。
    申し訳ありません、質問の内容を変更させて頂きました。
    正規表現での入力チェックの実装を試みたいです。
    お手数おかけしました。

    キャンセル

  • 2015/11/13 20:13

    少なくとも質問のコードはコードブロックで記述してください。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20307questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    5844questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • SQL

    2387questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • EC-CUBE

    285questions

    EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。