2012-04-16 22 views
1

各単語を分割し、それを内蔵のローカル辞書と比較し、別の言語の同等の単語に置き換える必要があります。特殊文字(* * of!)同じものであっても辞書と一致しません。文字列内の特殊な文字列の検索と置換

ここで、これらの特殊文字を空の文字列に置き換える必要があります。

$opis="of!"; 
$a=preg_replace('!"#$%&/()=?*+'-.,;:_', '', $opis); 
print_r($a); 

答えて

0

それはあなたが探しているものですか?

$result = str_replace($search, $replace, $subject); 
+0

私は多くの特殊文字を持っています "#$%&/()=?* + ' - 、;:比較するために〜str_replace naを比較する1つの特別なchar? –

0

正規表現を使用しているとき、あなたが持っている問題をテストされた上記

$a=preg_replace("/[^A-Za-z0-9]/", '', $opis); 

ため、この正規表現を使用すると、文字でのいくつかのエスケープする必要があるということです正規表現は多数の特殊文字を使用しているため、文字列です。リストはここにあります:http://www.regular-expressions.info/reference.html

str_replaceのような関数を使う方が簡単です。

0

str_replace();が必要です。 str_replaceを使用する方法について

// 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"); 
0

方法:PHPの公式ドキュメントから

!パフォーマンスのヒットが少ない

$chars= array("!", "\"", "#", "$", "%", "&", "/", "(", ")", "?", "*", "+", "'", "-", ".", ",", ";", ":", "_"); 
$cleanstring = str_replace($chars, "", $yourstring); 
1

ここで正規表現について投稿した人は何が問題になりますか? :/

さて、あなたの現在の解決策の問題は、正規表現の書き方にあります。

ステップ1:RegExの内部特殊文字のすべてを単一の\でエスケープします(さらに、あなたの文字列に残した余分な一重引用符...)

結果:

'!"#\$%&/\(\)=\?\*\+\'-\.,;:_' 

ステップ2:そうでない場合は正規表現は、ちょうどあなたがしたいかは明らかにされていない文字列!"#$%&/()=?*+'-.,;:_

のすべての出現を置き換えるためにしようと、文字クラスに結果をカプセル化起こる。カプセル化した後

'[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]' 

最後に、あなたは何か(PHP正規表現を定義し、これを必要とする)と、正規表現を区切る必要があり、我々はまた、合わせて、貪欲、「+」記号を追加します可能な限り多くの連続した記号を使用します。

決勝:

'~[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]+~' 

今、あなたは行くために良いことがあります:

$opis="of!"; 
$opis = preg_replace('[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]+', '', $opis); 
print_r($opis) 

をお楽しみください。次回は正規表現情報に最適な場所を調べるhere

関連する問題