我有像constant-string-NUMBER-*
这样的字符串
constant-string-
是一个常数字符串(我知道并且可以在获得数字的努力中使用),例如fix-str-
NUMBER
为任意自然数-*
可以是任意字符串
String-result例子:
fix-str-0
// result: 0
fix-str-0-another-str
// result: 0
fix-str-123
// result: 123
fix-str-456789
// result: 456789
fix-str-123456789-yet-another-str
// result: 1234567899
fix-str-999999-another-str-123
// result: 999999
我想从PHP中提取这些字符串的NUMBER,以便我可以将这个数字关联到一个变量,例如$numberFromString = ?
。
见解吗?
根据您的字符串示例,有两种可能的方法。一种方法可以使用explode
,当然另一种方法可以使用preg_match
用于regex。我将展示这两种方法,只是为了说明正则表达式并不总是绝对必要的。
使用explode
:
$strings = [
'fix-str-0',
'fix-str-0-another-str',
'fix-str-123',
'fix-str-456789',
'fix-str-123456789-yet-another-str',
'fix-str-999999-another-str-123',
];
$match = [];
$matches = [];
foreach ($strings as $string) {
$match = explode('-', $string);
if (count($match) >= 3) {
$matches[] = $match[2]; // Array offset 2 has the number
}
}
foreach($matches as $found) {
echo $found, PHP_EOL;
}
// Output:
0
0
123
456789
123456789
999999
使用preg_match
:
$strings = [
'fix-str-0',
'fix-str-0-another-str',
'fix-str-123',
'fix-str-456789',
'fix-str-123456789-yet-another-str',
'fix-str-999999-another-str-123',
];
$match = [];
$matches = [];
foreach ($strings as $string) {
// match 1 or more digits, store to $match
preg_match('/(d+)/', $string, $match);
if (!empty($match)) {
$matches[] = $match[0]; // use the first match
}
}
foreach($matches as $found) {
echo $found, PHP_EOL;
}
// Output:
0
0
123
456789
123456789
999999
试试这个:
fix-str-(d+)
fix-str-
匹配此字符串(d+)
后接一个或多个数字,并将号码保存在第一个捕获组内。
编辑
从@user3783243,我们也可以使用fix-str-Kd+
,而不需要捕获组。
fix-str-Kd+
fix-str-
匹配此字符串,则.K
重置上报的匹配起点。d+
然后匹配一个或多个数字。
参见regex demo
<?php
$str ="fix-str-123456789-yet-another-str fix-str-234";
$pattern = "/fix-str-Kd+/";
preg_match($pattern, $str, $arr1); //Find only the first match.
echo "The first match: " . $arr1[0]; //Output: 123456789
echo "nnn";
preg_match_all($pattern, $str, $arr2); //Find all the matches.
echo "All the matches: " . implode(',', $arr2[0]); //Output: 123456789,234
?>
您可以将字符串表示为字符数组。使用PHP的substr()函数,其中第二个参数是字符串剩下的数字。
的例子。返回"world"从字符串:
<?php
echo substr("Hello world",6);
?>
信息从这里:https://www.w3schools.com/php/func_string_substr.asp