我有一个字符串变量,看起来像这样:fasdhkfsdk, 1 sdfs
字符串中前后字符的数量会有所不同,但逗号和二进制值会一直存在(值会从 1 变为 0)。
我需要一种方法来切掉二进制值左右的所有内容,只留下 1 或 0。两边的字符数量确实发生了变化,所以我认为我不能使用 substr 或爆炸,但我可以是错的
非常感谢
ps 是的,二进制数字前总会有一个逗号和一个空格
示例 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 的第二部分并获取第二个字符。
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