文字列からプロジェクト番号を抽出する必要があります。プロジェクト番号が固定されていれば簡単でしたが、P.XXXXX
、P XXXXX
またはのいずれかになりますPXXXXX
。
私が使用できるような簡単な機能はありpreg_match
ますか?もしそうなら、私の正規表現は何ですか?
文字列からプロジェクト番号を抽出する必要があります。プロジェクト番号が固定されていれば簡単でしたが、P.XXXXX
、P XXXXX
またはのいずれかになりますPXXXXX
。
私が使用できるような簡単な機能はありpreg_match
ますか?もしそうなら、私の正規表現は何ですか?
確かにあります - これがより大きな文字列の一部である場合、たとえば"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];
一番上の例のより明示的な一致を好むかもしれませんが.
これを試して:
if (preg_match('#P[. ]?(\d{5})#', $project_number, $matches) {
$project_version = $matches[1];
}
プロジェクト番号は 5 桁のうちの 4 桁だとおっしゃいました。
preg_match('/P[. ]?(\d{4,5})/', $tring, $m);
$project_number = $m[1];
私はこの種の正規表現を使用します:/.*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);