私はこのコメントPHP.netを知っています。tr
PHPと同様のツールを使用して、簡単に実行できるようにしたいと思います。
tr -d " " ""
php_strip_whitespace
によって関数を実行できませんでした
$tags_trimmed = php_strip_whitespace($tags);
正規表現関数も実行できませんでした
$tags_trimmed = preg_replace(" ", "", $tags);
私はこのコメントPHP.netを知っています。tr
PHPと同様のツールを使用して、簡単に実行できるようにしたいと思います。
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);
\s
UTF-8が主流になると、この式は新しいutf-8文字に到達したときに失敗/停止することが多くなり、説明できない空白が残ります。
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
);
これは、タブ、改行、垂直タブ、フォームフィード、キャリッジリターン、スペースを考慮して削除し、さらにここから削除します。
nextline、非区切りスペース、モンゴル語の母語区切り文字、[en quad、em quad、en space、em space、three-per-em space、four-per-em space、6-per-em space、figure space、punctuation space 、細いスペース、ヘアスペース、ゼロ幅スペース、ゼロ幅非ジョイナー、ゼロ幅ジョイナー]、行区切り記号、段落区切り記号、狭いノーブレークスペース、中数学スペース、ワードジョイナー、イデオグラフィックスペース、およびゼロ幅非ジョイナースペースを壊します。
これらの多くは、自動化されたツールやサイトからエクスポートされたときにxmlファイルに大混乱をもたらし、テキストの検索や認識を汚し、PHPソースコードに目に見えない形で貼り付けることができます。これにより、パーサーは次のコマンド(段落と行の区切り文字)にジャンプし、行が発生します。スキップされるコードの数が断続的で説明のつかないエラーになり、「テキスト送信された病気」と呼ばれ始めました
[Webからコピーして貼り付けるのはもう安全ではありません。コードを保護するために文字スキャナーを使用してください。笑]
場合によっては、連続する空白を削除する必要があります。あなたはこのようにそれを行うことができます:
$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)まず、ラッパーを登録します(ファイルに一度だけ、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など)に含めることを忘れないでください
これは古い投稿ですが、最短の回答はここにリストされていないので、今追加しています
strtr($str,[' '=>'']);
「この猫の皮を剥ぐ」ためのもう1つの一般的な方法は、このように爆発と爆縮を使用することです。
implode('',explode(' ', $str));
あなたはを使用してそれを行うことができますereg_replace
$str = 'This Is New Method Ever';
$newstr = ereg_replace([[:space:]])+', '', trim($str)):
echo $newstr
// Result - ThisIsNewMethodEver
関数も使用しpreg_replace_callback
ます。preg_replace
この関数は、出力を操作する方法をより細かく制御できるコールバック関数を受け取ることができることを除いて、その兄弟と同じです。
$str = "this is a string";
echo preg_replace_callback(
'/\s+/',
function ($matches) {
return "";
},
$str
);
$string = trim(preg_replace('/\s+/','',$string));
古い投稿ですが、次のように実行できます。
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;
標準のtrim()関数は、HTMLエンティティの場合に問題になる可能性があります。そのため、この問題を処理するために使用される「スーパートリム」関数を作成しました。また、ストリングの最初、最後、またはブース側からトリミングすることもできます。
文字列全体からスペースを削除する簡単な方法は、explode関数を使用し、forループを使用して文字列全体を出力することです。
$text = $_POST['string'];
$a=explode(" ", $text);
$count=count($a);
for($i=0;$i<$count; $i++){
echo $a[$i];
}
\ s regex引数は、UTF-8マルチバイト文字列と互換性がありません。
このPHPRegExは、UTF-8文字列の代わりにPCRE(Perl互換正規表現)ベースの引数を使用してこれを解決するために作成したものです。
function remove_utf8_whitespace($string) {
return preg_replace('/\h+/u','',preg_replace('/\R+/u','',$string));
}
-使用例-
前:
$string = " this is a test \n and another test\n\r\t ok! \n";
echo $string;
this is a test
and another test
ok!
echo strlen($string); // result: 43
後:
$string = remove_utf8_whitespace($string);
echo $string;
thisisatestandanothertestok!
echo strlen($string); // result: 28
PCRE引数リスト
ソース:https ://www.rexegg.com/regex-quickstart.html
Character Legend Example Sample Match
\t Tab T\t\w{2} T ab
\r Carriage return character see below
\n Line feed character see below
\r\n Line separator on Windows AB\r\nCD AB
CD
\N Perl, PCRE (C, PHP, R…): one character that is not a line break \N+ ABC
\h Perl, PCRE (C, PHP, R…), Java: one horizontal whitespace character: tab or Unicode space separator
\H One character that is not a horizontal whitespace
\v .NET, JavaScript, Python, Ruby: vertical tab
\v Perl, PCRE (C, PHP, R…), Java: one vertical whitespace character: line feed, carriage return, vertical tab, form feed, paragraph or line separator
\V Perl, PCRE (C, PHP, R…), Java: any character that is not a vertical whitespace
\R Perl, PCRE (C, PHP, R…), Java: one line break (carriage return + line feed pair, and all the characters matched by \v)
タグの形式の空白には、いくつかの特殊なタイプがあります。あなたが使用する必要があります
$str=strip_tags($str);
冗長なタグ、エラータグを削除し、最初に通常の文字列を取得します。
そして使用する
$str=preg_replace('/\s+/', '', $str);
それは私のために働いています。