我需要从字符串中提取项目编号。如果项目编号已修复,则很容易,但可以是P.XXXXX
,P XXXXX
或PXXXXX
。
我可以使用像preg_match
这样的简单函数吗?如果是这样,我的正则表达式是什么?
答案 0 :(得分:1)
确实 - 如果这是更大的字符串的一部分,例如"The project (P.12345) is nearly done"
,您可以使用:
preg_match('/P[. ]?(\d{5})/',$str,$match);
$pnumber = $match[1];
否则,如果字符串始终只是P.12345
字符串,则可以使用:
preg_match('/\d{5}$/',$str,$match);
$pnumber = $match[0];
虽然您可能更喜欢顶级示例的更明确的匹配。
答案 1 :(得分:1)
试试这个:
if (preg_match('#P[. ]?(\d{5})#', $project_number, $matches) {
$project_version = $matches[1];
}
答案 2 :(得分:1)
你说项目编号是5位长的4位,所以:
preg_match('/P[. ]?(\d{4,5})/', $tring, $m);
$project_number = $m[1];
答案 3 :(得分:0)
使用explode()
函数来拆分
答案 4 :(得分:0)
假设您要从字符串中提取XXXXX并且XXXXX都是整数,您可以使用以下内容。
preg_replace("/[^0-9]/", "", $string);
您可以使用方括号内的^
或插入符字符来否定表达式。因此,在这种情况下,它将替换任何不是数字的东西。
答案 5 :(得分:0)
我会使用这种正则表达式:/.*P[ .]?(\d+).*/
以下是一些测试线:
$string = 'This is the P123 project, with another useless number 456.';
$project = preg_replace('/.*P[ .]?(\d+).*/', '$1', $string);
var_dump($project);
$string = 'This is the P.123 project, with another useless number 456.';
$project = preg_replace('/.*P[ .]?(\d+).*/', '$1', $string);
var_dump($project);
$string = 'This is the P 123 project, with another useless number 456.';
$project = preg_replace('/.*P[ .]?(\d+).*/', '$1', $string);
var_dump($project);