文字列から特殊文字を削除するための関数を使用しています。
function clean($string) {
$string = str_replace('', '-', $string); // Replaces all spaces with hyphens.
return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}
そして、これがテストケースです
echo clean('a|"bc!@£de^&$f g');
Will output: abcdef-g
SO Answer。からの参照。問題は、もし 'が文字列の最後の文字である場合、Excelファイルから文字列America'
を取得する場合、関数、それは'
をエスケープしません。最初と最後の文字が'
である場合、任意のヘルプ
通常の期待変化を置き換えようとする
preg_replace('/[^A-Za-z0-9\-]/', '', $string);
と
preg_replace("/[^A-Za-z0-9\-\']/", '', $string); // escape apostraphe
または
str_replacepreg_replace() よりも迅速かつ簡単です。正規表現を使用しないためです。
$text = str_replace("'", '', $string);
上記の例からより詳細な方法で、以下を考慮して文字列です:
_$string = '<div>This..</div> <a>is<a/> <strong>hello</strong> <i>world</i> ! هذا هو مرحبا العالم! !@#$%^&&**(*)<>?:";p[]"/.,\|`~1@#$%^&^&*(()908978867564564534423412313`1`` "Arabic Text نص عربي test 123 و,.m,............ ~~~ ٍ،]ٍْ}~ِ]ٍ}"; ';
_
コード:
_echo preg_replace('/[^A-Za-z0-9 !@#$%^&*().]/u','', strip_tags($string));
_
_Allows:
_英字(大文字と小文字)、0〜9および文字!@#$%^&*().
_Removes:
_すべてのhtmlタグ、および上記以外の特殊文字
一見すると、addslashes関数が出発点になると思います。 http://php.net/manual/en/function.addslashes.php
間違いなくより良いパターンがありますが、これは文字列全体で機能するはずです:
preg_replace("/^'|[^A-Za-z0-9\'-]|'$/", '', $string);
文字列内の単語の周りでそれらを置き換える必要がある場合は、Wordの境界に\ bを使用する必要があります。また、開始または終了で倍数を置き換える場合は、それらに+を追加する必要があります。