如何在字符串"constant-string-NUMBER-*"中获取数字?



我有像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

相关内容

  • 没有找到相关文章

最新更新