私はこれを知っています コメント PHP.net。 PHPのようなtr
のような同様のツールがあれば、簡単に実行できます。
tr -d " " ""
関数php_strip_whitespace
の実行に失敗しました
$tags_trimmed = php_strip_whitespace($tags);
正規表現関数も実行に失敗しました
$tags_trimmed = preg_replace(" ", "", $tags);
正規表現は、デフォルトではUTF-8文字を考慮しません。 \s
メタ文字は、元のラテン語セットのみを説明します。したがって、次のコマンドはタブ、スペース、キャリッジリターン、および改行のみを削除します
// http://stackoverflow.com/a/1279798/54964
$str=preg_replace('/\s+/', '', $str);
UTF-8が主流になりつつあるため、この式は新しいutf-8文字に達すると失敗/停止し、\s
で説明できない空白が残ります。
Unicode/utf-8で導入された新しいタイプの空白を処理するには、現代の空白を照合および削除するために、より広範な文字列が必要です。
デフォルトでは正規表現はマルチバイト文字を認識しないため、区切られたメタ文字列のみを使用して識別し、バイトセグメントが他のutf-8文字(クワッドセットの\x80
すべての\x80
サブバイトをスマートクォートで置き換えます)
$cleanedstr = preg_replace(
"/(\t|\n|\v|\f|\r| |\xC2\x85|\xc2\xa0|\xe1\xa0\x8e|\xe2\x80[\x80-\x8D]|\xe2\x80\xa8|\xe2\x80\xa9|\xe2\x80\xaF|\xe2\x81\x9f|\xe2\x81\xa0|\xe3\x80\x80|\xef\xbb\xbf)+/",
"_",
$str
);
これは、タブ、改行、垂直タブ、改ページ、キャリッジリターン、スペースを考慮して削除し、さらに here から削除します:
nextline、改行なしスペース、モンゴル語母音セパレータ、[en quad、em quad、en space、em space、em-per-perスペース、four-per-emスペース、six-per-emスペース、figureスペース、句読点スペース、シンスペース、ヘアスペース、ゼロ幅スペース、ゼロ幅非ジョイナー、ゼロ幅ジョイナー]、ラインセパレーター、パラグラフセパレーター、ナローノーブレークスペース、ミディアム数学的スペース、ワードジョイナー、表意文字スペース、ゼロ幅非破壊スペース。
これらの多くは、テキスト検索、認識を汚す自動化されたツールまたはサイトからエクスポートされ、パーサーがjumpを引き起こすPHPソースコードに目に見えないように貼り付けられるXML次のコマンド(段落と行の区切り)。これにより、コードの行がスキップされ、「テキスト送信感染症」と呼ばれ始めた断続的で説明のつかないエラーが発生します。
[ウェブからコピーして貼り付けるのは安全ではありません。文字スキャナーを使用してコードを保護します。笑]
any空白を削除するには、正規表現を使用できます
$str=preg_replace('/\s+/', '', $str);
UTF-8文字列の空白を処理できるものについては this answer も参照してください。
連続した空白を削除する必要がある場合があります。次のようにできます:
$str = "My name is";
$str = preg_replace('/\s\s+/', ' ', $str);
出力:
My name is
$string = str_replace(" ", "", $string);
Preg_replaceは[:space:]
PHPのトリム関数を使用して、両側(左と右)をトリムできます。
trim($yourinputdata," ");
または
trim($yourinputdata);
使用することもできます
ltrim() - Removes whitespace or other predefined characters from the left side of a string
rtrim() - Removes whitespace or other predefined characters from the right side of a string
システム:PHP 4,5,7
ドキュメント: http://php.net/manual/en/function.trim.php
$ tagsからすべての空白をすべて削除したい場合は、次の理由だけではありません:
str_replace(' ', '', $tags);
新しい行を削除したい場合、もう少し必要です...
可能なオプションは、変数をファイルとしてシミュレートするためにカスタムファイルラッパーを使用することです。これを使用して達成できます:
1)まず、ラッパーを登録します(ファイルに1回だけ、session_start()のように使用します):
stream_wrapper_register('var', VarWrapper);
2)次に、ラッパークラスを定義します(実際には高速で記述されており、完全に正しいわけではありませんが、動作します)。
class VarWrapper {
protected $pos = 0;
protected $content;
public function stream_open($path, $mode, $options, &$opened_path) {
$varname = substr($path, 6);
global $$varname;
$this->content = $$varname;
return true;
}
public function stream_read($count) {
$s = substr($this->content, $this->pos, $count);
$this->pos += $count;
return $s;
}
public function stream_stat() {
$f = fopen(__file__, 'rb');
$a = fstat($f);
fclose($f);
if (isset($a[7])) $a[7] = strlen($this->content);
return $a;
}
}
3)次に、var://プロトコルのラッパーで任意のファイル関数を使用します(include、requireなどにも使用できます)。
global $__myVar;
$__myVar = 'Enter tags here';
$data = php_strip_whitespace('var://__myVar');
注:変数をグローバルスコープ(グローバル$ __ myVarなど)にすることを忘れないでください
また、preg_replace_callback
関数 。この関数は、その兄弟preg_replace
それ以外は、出力の操作方法をより詳細に制御できるコールバック関数を使用できます。
$str = "this is a string";
echo preg_replace_callback(
'/\s+/',
function ($matches) {
return "";
},
$str
);
ereg_replace
を使用して実行できます
$str = 'This Is New Method Ever';
$newstr = ereg_replace([[:space:]])+', '', trim($str)):
echo $newstr
// Result - ThisIsNewMethodEver
文字列全体からスペースを削除する簡単な方法は、explode関数を使用し、forループを使用して文字列全体を印刷することです。
$text = $_POST['string'];
$a=explode(" ", $text);
$count=count($a);
for($i=0;$i<$count; $i++){
echo $a[$i];
}
古い投稿ですが、次のように行うことができます:
if(!function_exists('strim')) :
function strim($str,$charlist=" ",$option=0){
$return='';
if(is_string($str))
{
// Translate HTML entities
$return = str_replace(" "," ",$str);
$return = strtr($return, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES)));
// Choose trim option
switch($option)
{
// Strip whitespace (and other characters) from the begin and end of string
default:
case 0:
$return = trim($return,$charlist);
break;
// Strip whitespace (and other characters) from the begin of string
case 1:
$return = ltrim($return,$charlist);
break;
// Strip whitespace (and other characters) from the end of string
case 2:
$return = rtrim($return,$charlist);
break;
}
}
return $return;
}
endif;
HTMLエンティティが来ると、標準的なtrim()関数は問題になる可能性があります。そのため、この問題を処理するために使用される「スーパートリム」機能を作成しました。また、ストリングの開始、終了、またはブース側からトリミングすることもできます。