次のような文字列変数があります。fasdhkfsdk, 1 sdfs
文字列の前後の文字の量はサイズが異なりますが、カンマとバイナリ値は常に存在します (値は 1 から 0 に変化します)。
バイナリ値の左右すべてを切り捨て、1 または 0 だけを残す方法が必要です。両側の文字の量は変化するため、substr や爆発を使用できるとは思いませんが、可能です。間違う
どうもありがとう
ps はい、2 進数の前には常にコンマとスペースがあります
例 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);
例substr
4strrpos
//credit: slugonamission
$string = "fasdhkfsdk, 1 sdfs" ;
echo trim(substr($string , strrpos($string,",") + 1 ,2));
出力
1
正規表現を試してみてください。
次のように正規表現を使用できます。
$string = "fasdhkfsdk, 1 sdfs";
echo preg_replace("[^01]", "", $string);
文字列がアルファベットの文字のみであることが確実な場合は、0と1以外のすべてが削除されます
これを試してください: 最初に文字列を分解します。
$r = explode(",",$string)
次に、配列 $r の 2 番目の部分にアクセスして、2 番目の文字を取得します。
echo $r[1][1];
または似たようなもの。
バイナリ値が欲しいだけですか?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