0

次のような文字列変数があります。fasdhkfsdk, 1 sdfs

文字列の前後の文字の量はサイズが異なりますが、カンマとバイナリ値は常に存在します (値は 1 から 0 に変化します)。

バイナリ値の左右すべてを切り捨て、1 または 0 だけを残す方法が必要です。両側の文字の量は変化するため、substr や爆発を使用できるとは思いませんが、可能です。間違う

どうもありがとう

ps はい、2 進数の前には常にコンマとスペースがあります

4

5 に答える 5

6

例 1sscanf

$string = "fasdhkfsdk, 1 sdfs" ;
$part = sscanf($string, "%s %d %s");
echo $part[1];

別の例sscanf

$string = "fasdhkfsdk, 1 sdfs" ;
$part = sscanf($string, "%s %d %s",$prifix,$number,$sufix);
print($number);


例 2preg_match_all

$string = "fasdhkfsdk, 1 sdfs" ;
preg_match_all('!\d+!', $string, $matches);
print($matches[0][0]);


例 3filter_var

$string = "fasdhkfsdk, 1 sdfs" ;
$int = filter_var($string, FILTER_SANITIZE_NUMBER_INT);
print($int);


substr4strrpos

//credit: slugonamission

$string = "fasdhkfsdk, 1 sdfs" ;
echo trim(substr($string , strrpos($string,",") + 1 ,2));


出力

 1 
于 2012-09-25T16:39:14.083 に答える
0

正規表現を試してみてください。

于 2012-09-25T16:39:41.120 に答える
0

次のように正規表現を使用できます。

$string = "fasdhkfsdk, 1 sdfs";
echo preg_replace("[^01]", "", $string);

文字列がアルファベットの文字のみであることが確実な場合は、0と1以外のすべてが削除されます

于 2012-09-25T16:40:34.160 に答える
0

これを試してください: 最初に文字列を分解します。 $r = explode(",",$string)

次に、配列 $r の 2 番目の部分にアクセスして、2 番目の文字を取得します。

echo $r[1][1];

または似たようなもの。

于 2012-09-25T16:41:00.457 に答える
0

バイナリ値が欲しいだけですか?1 か 0 かを知りたい場合は、試してみてください。

$ar = explode(",", "fasdhkfsdk, 1 sdfs"); // split on the comma
echo(intval($ar[1])); // convert everything after the comma to an int.  should be 0 or 1
于 2012-09-25T16:42:08.850 に答える