web-dev-qa-db-ja.com

PHP-文字列間の空白を検出

文字列内の空白を検出するにはどうすればよいですか?たとえば、次のような名前文字列があります。

"ジェーン・ドウ"

最初の文字列と2番目の文字列の間に空白が存在するかどうかを検出するだけで、トリミングしたり置き換えたりしたくないことに注意してください。

30

Joshが提案するpreg_matchを使用します。

<?php

$foo = "Dave Smith";
$bar = "SamSpade";
$baz = "Dave\t\t\tSmith";

var_dump(preg_match('/\s/',$foo));
var_dump(preg_match('/\s/',$bar));
var_dump(preg_match('/\s/',$baz));

出力:

int(1)
int(0)
int(1)
77
hobodave

preg_match( "/\s /"、$ string) は機能しませんか? strposに対するこれの利点は、スペースだけでなく空白も検出することです。

8
Josh

空白文字ではない英数字のみをチェックできます。スペースに対してstrposを実行することもできます。

if(strpos($string, " ") !== false)
{
   // error
}
8
Tyler Carter

次のようなものを使用できます。

if (strpos($r, ' ') > 0) {
    echo 'A white space exists between the string';
}
else
{
    echo 'There is no white space in the string';
}

これはスペースを検出しますが、他の種類の空白は検出しません。

5
gurjeet kj

http://no.php.net/strpos

<?php
if(strpos('Jane Doe', ' ') > 0)
    echo 'Including space';
else
    echo 'Without space';
?>
0
ThoKra
// returns no. of matches if $str has nothing but alphabets,digits and spaces.
function is_alnumspace($str){
  return preg_match('/^[a-z0-9 ]+$/i',$str);
}
0
Rachel
// returns no. of matches if $str has nothing but alphabets,digits and spaces. function 

    is_alnumspace($str) {
          return preg_match('/^[A-Za-z0-9 ]+$/i',$str);
    }

// This variation allows uppercase and lowercase letters.