各単語を分割し、組み込みのローカル辞書と比較して、別の言語の同等の単語に置き換える必要があります。単語を特殊文字 (*例: *of!) で分割すると、辞書と一致しません。それらは同じです。
ここで、これらの特殊文字を空の文字列に置き換える必要があります。
$opis="of!";
$a=preg_replace('!"#$%&/()=?*+'-.,;:_', '', $opis);
print_r($a);
str_replace
または使用できますpreg_replace
例preg_replace
http://php.net/manual/en/function.preg-replace.php
$str = preg_replace("/\W+/", '', $str);
var_dump($str);
例str_replace
http://php.net/manual/en/function.str-replace.php
$search = '!"#$%&/()=?*+\'-.,;:_' ;
$search = str_split($search);
$str = "OF!" ;
var_dump(str_replace($search, "", $str));
出力
string 'OF' (length=2)
ここに正規表現について投稿するみんなの何が問題なのですか? :/
さて、あなたが現在のソリューションで抱えている問題は、正規表現の書き方にあります。
ステップ 1: RegEx のすべての内部特殊文字を単一でエスケープ\
します (文字列に残した余分な単一引用符も同様です...)
結果:
'!"#\$%&/\(\)=\?\*\+\'-\.,;:_'
ステップ 2: 結果を文字クラスにカプセル化します。そうしないと、RegEx は文字列のすべての出現を置き換えようとします!"#$%&/()=?*+'-.,;:_
これは明らかにあなたが望んでいることではありません。
カプセル化後:
'[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]'
最後に、正規表現を何かで区切る必要があります (PHP では、正規表現を定義するためにこれが必要です)。また、できるだけ多くの連続する記号に一致するように貪欲な「+」記号も追加します。
最後の:
'~[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]+~'
これで準備完了です:
$opis="of!";
$opis = preg_replace('[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]+', '', $opis);
print_r($opis)
正規表現を使用する際の問題は、文字列内のいくつかの文字をエスケープする必要があることです。これは、正規表現が多数の特殊文字を使用しているためです。リストはここにあります: http://www.regular-expressions.info/reference.html
str_replace のような関数を使用すると、より簡単な解決策になります。
str_replace(); 必要なものです。
PHPの公式ドキュメントから:
// Provides: Hll Wrld f PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
str_replace を使用するのはどうですか! パフォーマンスへの影響が小さい
$chars= array("!", "\"", "#", "$", "%", "&", "/", "(", ")", "?", "*", "+", "'", "-", ".", ",", ";", ":", "_");
$cleanstring = str_replace($chars, "", $yourstring);
それはあなたが探しているものですか?
http://php.net/manual/fr/function.str-replace.php
$result = str_replace($search, $replace, $subject);
上記にはこの正規表現を使用します
$a=preg_replace("/[^A-Za-z0-9]/", '', $opis);
テスト済み