我将网页的HTML标记作为$ subject。我正在使用preg_match搜索特定字符串 artist_x? 并尝试仅返回x部分。 x可以是1到12位的任何数字。因此,模式必须匹配以下任何/所有:
artist_1?
artist_12345?
artist_123456789012?
......然后带回来:
1
12345
123456789012
...分别
这是我能提出的最接近的:
$pattern = '|[artist_][0-9]{1,12}|';
preg_match($pattern, $subject, $matches);
但是它没有正常工作......它找到了我正在寻找的字符串,甚至返回了预期的数字,但返回的数字仍然有下划线。我已经尝试了很多解决方案来实现这一目标,但我没有想法。
谢谢!
答案 0 :(得分:1)
我真的不明白你的模式应该做什么。
无论如何,这应该工作:您只需捕获您感兴趣的数字。 $matches
将是一个数组,首先包含整个匹配,然后是组。所以第一组将是你想要的。
$subject = "artist_3333";
$pattern = '/artist_(\d{1,12})/';
preg_match($pattern, $subject, $matches);
echo($matches[1]); // 3333
\d
在这里意味着与[0-9]
相同,它匹配数字