我想在其他数字组之间选择数字。
我认为最好显示此模式以解释我的意思:
xxxxx...xxxxyyyyyyy....yyyyzzzzzzz....zzzz
{ 1000 } { 1500 }
因此,从上面的字符串结构中,我想选择介于前1000位(xx)和最后1500位(zz)之间的数字。
我尝试了substr
,但由于必须指定长度,因此它对我不起作用。因为我不知道这两个索引之间的长度。
这是我的代码:
$id = base64_encode($core->security(1070).$list["user_id"]);
$core->security
创建的数字与输入的数字相同。
在此示例中,它创建了1070个随机数字的长度。
$decoded = base64_decode($id);
$homework_id = mysqli_real_escape_string($connection,substr($decoded, 1070));
我可以在一定长度的数字后选择数字。但是我想让他们在一系列数字之间 。
答案 0 :(得分:0)
您可以使用regex来捕获1000
和1500
之间的数字
<?php
$number = '10001212121212121500'; #make it string first
if (preg_match('/1000(.*?)1500/', $number, $match) == 1) {
echo (int)$match[1];
}
?>
DEMO1: https://3v4l.org/pebul
DEMO2: https://3v4l.org/8TiWH
答案 1 :(得分:0)
我尝试了
substr
,但由于必须指定长度,因此它对我不起作用。因为我的长度不在1000到1500之间。
您可能会错过的substr
功能。来自documentation:
如果给定
length
并且为负数,则将从字符串末尾省略许多字符
这将起作用:
$left = 1000; // Number of characters to be chopped off from the left side
$right = 1500; // Number of characters to be chopped off from the right side
$id = substr($id, $left, -$right) ?: "";
可以在?: ""
部分将false
转换为""
。当字符串中没有足够的字符来切掉那么多字符时,substr
将返回false
。如果在这种情况下,您只想获取一个空字符串,那么?: ""
会做到这一点。
答案 2 :(得分:0)
$text = <<<HEREDOC
xxxxx...xxxxyyyyyyy....yyyyzzzzzzz....zzzz
{ 1000 } { 1500 }
HEREDOC;
preg_match_all('/\{\s+(\d+)\s+\}/', $text, $matches);
var_dump($matches);
结果:
array(2) {
[0]=>
array(2) {
[0]=>
string(12) "{ 1000 }"
[1]=>
string(15) "{ 1500 }"
}
[1]=>
array(2) {
[0]=>
string(4) "1000"
[1]=>
string(4) "1500"
}
}