フォームを送信するときに、送信されたコンテンツから次のような特殊文字を除外する必要があるという問題が発生しました:~!@#$%^&*()_+ .. これら
たとえば、次のような送信コンテンツがあります。 Life*& )(_more beautiful
フィルタリングの方法: 人生はもっと美しくなることができます。
私のアプローチは次のとおりです:
$str=str_replace("&","",$str);
$str=str_replace(" > ;","",$str);
$str=str_replace("<","",$str);
$str=str_replace("=","",$str);
$str= str_replace ("(","",$str);
$str=str_replace(")","",$str);
$str=str_replace("[","",$str); = str_replace("]","",$str);
$str=str_replace(".","",$str);
$str=str_replace("*","",$str); str =str_replace("#","",$str);
$str=str_replace("$","",$str);
$ str=str_replace("-","",$str);
$str=str_replace("+","",$str);
$str=str_replace("!","",$str);
$str=str_replace("~","",$str); ;
$str=str_replace("%","",$str);
$str=str_replace(""","",$str); ) ;
80 ポイントあります
ディスカッションに返信します
理由: $str=preg_replace("[`~!@#$%^ &*()+=| {}':;',//[//].<>/?~! @#¥%......&*()??+|{}[]';: "'. 、、? ]",'',$str);このように書いてもうまくいきませんか?
理由: $str=preg_replace("[`~!@#$%^&*()+=|{}':;' ,/ /[//].<>/?~! @#¥%....&*()??+|{}【】';:""'.,? '',$str );このように書くとうまくいきませんか?
1. 最大の問題は、正規表現に境界文字がないことです
兄弟、どうすればいいですか?
$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] => 票 )
が、手書きの配列は同じです