可能性の重複:私は、変数には、特殊文字が存在するかどうかを確認する必要が私のレジスタシステムの一部として
preg_match php special characters特殊文字
。このチェックはどのように行うことができますか?最も正確な答えを与える人が最もよくなる。
可能性の重複:私は、変数には、特殊文字が存在するかどうかを確認する必要が私のレジスタシステムの一部として
preg_match php special characters特殊文字
。このチェックはどのように行うことができますか?最も正確な答えを与える人が最もよくなる。
$special_chars = // all the special characters you want to check for
$string = // the string you want to check for
if (preg_match('/'.$special_chars.'/', $string))
{
// special characters exist in the string.
}
「phpの特殊文字」のための迅速なGoogle検索は、いくつかの良い情報現れます詳細は
ああええ、特別な文字をエスケープするのではなく、存在をチェックしたい場合は、これが行く方法です – Jasper
をpreg_matchのマニュアルを参照してください:ときあなたはhtmlエンティティを意味すると仮定すると
htmlentities() - http://php.net/manual/en/function.htmlentities.php
htmlspecialchars() - http://php.net/manual/en/function.htmlspecialchars.php
私はあなたが読む必要があると思いますあなた自身が一度マニュアルを書いています。これらはすべての文字をHTMLエンティティに変換するために使用され、特殊文字が存在するかどうかをチェックしません。 – Balanivash
あなたの投稿に私のコメントをチェックアウトします。 – Jasper
を「特別な文字」と言うと、これを使うことができます:
<?php
$table = get_html_translation_table(HTML_ENTITIES, ENT_COMPAT, 'UTF-8');
$chars = implode('', array_keys($table));
if (preg_match("/[{$chars}]+/", $string) === 1) {
// special chars in string
}
get_html_translation_table
はすべての可能なhtmlエンティティを取得します。関数htmlspecialchars
が変換するエンティティのみが必要な場合は、HTML_ENTITIES
の代わりにHTML_SPECIALCHARS
を渡すことができます。 get_html_translation_table
の戻り値は、(htmlエンティティ、エスケープされたエンティティ)のペアの配列です。
次に、すべてのhtmlエンティティを[&"']+
のような正規表現に入れたいと思います。これは、長さが1以上の角括弧内の文字のいずれかを含む部分文字列と一致します。したがって、変換テーブル(エンコードされていないhtmlエンティティ)のキーを取得するためにarray_keys
を使用し、それらをまとめて1つの文字列にします。
次に正規表現に入れ、preg_match
を使用して文字列にこれらの文字が含まれているかどうかを確認します。 regular expression syntaxについては、PHPのドキュメントを参照してください。
あなたがpplに手伝ってもらうために、plsはあなたの前の質問に対する回答を受け入れます。 – Balanivash
「特殊文字」の定義は解釈の対象となります。あなたは "特殊文字"の意味を定義できますか?または、そのリストが短い場合、「特殊文字」とはみなされない文字はどれですか? –
「最も正確な答えを出す人が最も得意な人」という意味は何ですか?これはコンテストではなくコミュニティです。 – Balanivash