I have strings:
我有字符串:
$one = 'foo bar 4 baz (5 qux quux)';
$two = 'bar baz 2 bar';
$three = 'qux bar 12 quux (3 foo)';
$four = 'foo baz 3 bar (13 quux foo)';
How can I find the numeric digits in these strings?
如何找到这些字符串中的数字数字?
Maybe with function:
也许与功能:
function numbers($string){
// ???
$first = ?;
$second = ?;
}
For example:
例如:
function numbers($one){
// ???
$first = 4;
$second = 5;
}
function numbers($two){
// ???
$first = 2;
$second = NULL;
}
Best way for this maybe is regex, but how can I use this for my example? Maybe without regex?
最好的方法可能是regex,但是我如何在我的示例中使用它呢?也许没有正则表达式?
3 个解决方案
#1
25
You can use regular expressions for this. The \d
escape sequence will match all digits in the subject string.
你可以用正则表达式来表示。\d转义序列将匹配主题字符串中的所有数字。
For example:
例如:
<?php
function get_numerics ($str) {
preg_match_all('/\d+/', $str, $matches);
return $matches[0];
}
$one = 'foo bar 4 baz (5 qux quux)';
$two = 'bar baz 2 bar';
$three = 'qux bar 12 quux (3 foo)';
$four = 'foo baz 3 bar (13 quux foo)';
print_r(get_numerics($one));
print_r(get_numerics($two));
print_r(get_numerics($three));
print_r(get_numerics($four));
https://3v4l.org/DiDBL
#2
6
You can do:
你能做什么:
$str = 'string that contains numbers';
preg_match_all('!\d+!', $str, $matches);
print_r($matches);
#3
5
Here's my attempt WITHOUT a regular expression
这是我没有正则表达式的尝试
function getNumbers($str) {
$result = array();
// Check each character.
for($i = 0, $len = strlen($str); $i < $len; $i++) {
if(is_numeric($str[$i])) {
$result[] = $str[$i];
}
}
return $result;
}
$one = 'one two 4 three (5 four five)';
$two = 'one two 2 three';
$three = 'one two 12 three (3 four)';
$four = 'one two 3 three (13 four five)';
var_dump(getNumbers($one));
var_dump(getNumbers($two));
var_dump(getNumbers($three));
var_dump(getNumbers($four));
// Output:
/ /输出:
array(2) {
[0]=>
string(1) "4"
[1]=>
string(1) "5"
}
array(1) {
[0]=>
string(1) "2"
}
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
}
array(3) {
[0]=>
string(1) "3"
[1]=>
string(1) "1"
[2]=>
string(1) "3"
}
#1
25
You can use regular expressions for this. The \d
escape sequence will match all digits in the subject string.
你可以用正则表达式来表示。\d转义序列将匹配主题字符串中的所有数字。
For example:
例如:
<?php
function get_numerics ($str) {
preg_match_all('/\d+/', $str, $matches);
return $matches[0];
}
$one = 'foo bar 4 baz (5 qux quux)';
$two = 'bar baz 2 bar';
$three = 'qux bar 12 quux (3 foo)';
$four = 'foo baz 3 bar (13 quux foo)';
print_r(get_numerics($one));
print_r(get_numerics($two));
print_r(get_numerics($three));
print_r(get_numerics($four));
https://3v4l.org/DiDBL
#2
6
You can do:
你能做什么:
$str = 'string that contains numbers';
preg_match_all('!\d+!', $str, $matches);
print_r($matches);
#3
5
Here's my attempt WITHOUT a regular expression
这是我没有正则表达式的尝试
function getNumbers($str) {
$result = array();
// Check each character.
for($i = 0, $len = strlen($str); $i < $len; $i++) {
if(is_numeric($str[$i])) {
$result[] = $str[$i];
}
}
return $result;
}
$one = 'one two 4 three (5 four five)';
$two = 'one two 2 three';
$three = 'one two 12 three (3 four)';
$four = 'one two 3 three (13 four five)';
var_dump(getNumbers($one));
var_dump(getNumbers($two));
var_dump(getNumbers($three));
var_dump(getNumbers($four));
// Output:
/ /输出:
array(2) {
[0]=>
string(1) "4"
[1]=>
string(1) "5"
}
array(1) {
[0]=>
string(1) "2"
}
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
}
array(3) {
[0]=>
string(1) "3"
[1]=>
string(1) "1"
[2]=>
string(1) "3"
}