0

我有一个字符串变量,看起来像这样:fasdhkfsdk, 1 sdfs

字符串中前后字符的数量会有所不同,但逗号和二进制值会一直存在(值会从 1 变为 0)。

我需要一种方法来切掉二进制值左右的所有内容,只留下 1 或 0。两边的字符数量确实发生了变化,所以我认为我不能使用 substr 或爆炸,但我可以是错的

非常感谢

ps 是的,二进制数字前总会有一个逗号和一个空格

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 的第二部分并获取第二个字符。

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 回答