ホームページ >バックエンド開発 >PHPチュートリアル >特殊文字のフィルタリングについては…80点でした。 。

特殊文字のフィルタリングについては…80点でした。 。

WBOY
WBOYオリジナル
2016-06-23 14:16:371027ブラウズ

フォームを送信するときに、送信されたコンテンツから次のような特殊文字を除外する必要があるという問題が発生しました:~!@#$%^&*()_+ .. これら
たとえば、次のような送信コンテンツがあります。 Life*& )(_more beautiful

フィルタリングの方法: 人生はもっと美しくなることができます。

私のアプローチは次のとおりです:
$str=str_replace("&","",$str);
$str=str_replace(" > ;","",$str);
$str=str_replace("f0ffbd56a864a5ba197134cf3057927a/?~! @#¥%....&*()??+|{}【】';:""'.,? '',$str );このように書くとうまくいきませんか?

1. 最大の問題は、正規表現に境界文字がないことです

2. エスケープは // ではなく \ であると見なされます
3. |

4. ダブル 引用符の中に二重引用符はありますか?

...

兄弟、どうすればいいですか?


$p = str_split("&><=()[].*#$@-+&! ~ ^%'\"_");$s = '生活*&)可以)(_更美的';echo str_replace($p, '', $s);
人生はもっと美しくなることができます


わかりました、アドバイスありがとうございます... ¥などの全角の特殊文字が分かりません(、これも当てはまるでしょうか…やってみます

分かりました、アドバイスありがとうございます…については分かりません。 ¥などの全角特殊文字(、これらも当てはまるでしょうか...試してみます

全角なら次の関数を使う

<?php function mb_str_split( $string, $encoding='UTF-8' ) {     # Split at all position not after the start: ^     # and not before the end: $     mb_regex_encoding($encoding);    mb_internal_encoding($encoding);     return preg_split('/(?<!^)(?!$)/u', $string, ); } $string   = '火车票'; $charlist = mb_str_split( $string ); // 如果是gbk的话使用// $charlist = mb_str_split( $string,'GBK' ); print_r( $charlist ); ?> # Prints: Array (     [0] => 火     [1] => 车     [2] => 票 )

文字列を配列に切り出す場合は全角は適切ではありません

が、手書きの配列は同じです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。