sms*_*sms 4 php regex preg-match
嗨,我开始学习 php regex 并遇到以下问题:我需要提取 $string 中的数字。我使用的正则表达式返回“NULL”。
$string = 'Clasificación</a> (2194) </li>';
$regex = '/Clasificación</a>((.*?))</li>/';
preg_match($regex , $string, $match);
var_dump($match);
Run Code Online (Sandbox Code Playgroud)
提前致谢。
您的正则表达式存在三个问题:
((.*?))不会做你认为它会做的事情。它创建了两个捕获组——一个嵌套在另一个中。我假设,您正在尝试捕获括号内的内容。为此,您需要对(和)字符进行转义。表达式将变为:\((.*?)\)</a>中,数字 -- 和开头之间有空格</a> (2194)。要忽略空格并仅捕获数字,您需要使用\s(匹配任何空格字符)。为此,您需要编写\s*\((.*?)\)\s*.修复上述所有错误后的最终正则表达式将如下所示:
$regex = '~Clasificación</a>\s*\((.*?)\)\s*</li>~';
Run Code Online (Sandbox Code Playgroud)
完整代码:
$string = 'Clasificación</a> (2194) </li>';
$regex = '~Clasificación</a>\s*\((.*?)\)\s*</li>~';
preg_match($regex , $string, $match);
var_dump($match);
Run Code Online (Sandbox Code Playgroud)
输出:
array(2) {
[0]=>
string(32) "Clasificación (2194) "
[1]=>
string(4) "2194"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |