我有像constant-string-NUMBER-*这样的琴弦

  • constant-string-是一个特殊的字符串(我知道它可以用来获得数字),例如fix-str-
  • NUMBER是任意自然数
  • -*可以是任何字符串

字符串结果示例:

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中的那些字符串中提取数字,这样我就可以将这个数字与一个变量相关联,例如$numberFromString = ?.

有什么见解吗?

推荐答案

试试这个:

fix-str-(\d+)
  • fix-str-与此字符串匹配.
  • (\d+)后面跟一个或多个数字,并将号码保存在第一个捕捉组中.

EDIT

从@user3783243,我们也可以使用fix-str-\K\d+,而不需要捕获组.

fix-str-\K\d+
  • fix-str-匹配此字符串,然后..
  • \K重置所报告匹配的起点.
  • \d+然后匹配一个或多个数字.

regex demo

<?php 
$str ="fix-str-123456789-yet-another-str fix-str-234";

$pattern = "/fix-str-\K\d+/";

preg_match($pattern, $str, $arr1); //Find only the first match.

echo "The first match: " . $arr1[0]; //Output: 123456789

echo "\n\n\n";

preg_match_all($pattern, $str, $arr2); //Find all the matches.

echo "All the matches: " . implode(',', $arr2[0]); //Output: 123456789,234
?>

Php相关问答推荐

如何根据键上的特定标准对对象数组进行排序?

Postgrid Webhook不叫laravel

从WooCommerce Checkout Country Select2下拉列表中重新排序国家/地区

具有重叠捕获组的PHP正则表达式

在WooCommerce中禁用特定日期之前的免费送货

Laravel关系-为用户获取属于组织的所有团队

如何使用php一次更新两个数据库中的MySQL表

如何从Laravel中的Spatie\Dns\Records\A对象中提取IP地址

如何在execute语句中使用存储过程参数?

如何将WooCommerce产品从一个产品复制到另一个产品S

即使在WooCommerce购物车中添加了两次产品,也要将所有项目设置为空白行

显示 woocommerce 中所选变体的属性术语描述

Laravel 在数据库上显示加密列

根据小计向 WooCommerce Checkout 添加佣金

图片上传成功

致命错误:未捕获 Google_Exception:客户端机密 JSON 文件无效.在 /somepath/lib/vendor/google/apiclient/src/Google/Client.php

URL中包含"&"与DirectoryIterator不兼容

用于检测此模式的正则表达式:something;something=something,something=something... 未知次数

转发和非转发呼叫 - 后期静态绑定

来自命令行的 PHP 没有给出正确的结果