1

例: Lorem ipsum dolor sit amet, [ID: 123] Suspendisse [blahsh 68] condimentu

どうすれば123になりますか?

文字の位置を確認する最初の部分があります。

$pos = strrpos($l, "ID: ");
if ($pos === false) {
    $id = 123;
}
4

2 に答える 2

9

これは、正規表現で最も簡単に処理できます。

$matches = array();
$pattern = '/^.*\[ID:\s+(\d+)\].*$/';
preg_match($pattern, "Lorem ipsum dolor sit amet, [ID: 123] Suspendisse [blahsh 68] condimentu", $matches);


// Your number is in $matches[1]
Array
(
    [0] => Lorem ipsum dolor sit amet, [ID: 123] Suspendisse [blahsh 68] condimentu
    [1] => 123
)

パターンが一致[ID:し、その後に。を介して任意の数のスペースが続きます\s+。次に(\d+)、数字のシーケンスをキャプチャします。角かっこは正規表現のメタ文字であるため、[]エスケープする必要があります。\[ \]

式の残りの部分に興味がある場合:

  • ^.*文字列の先頭とそれに続くその他の文字列です...
  • .*$すでに上で説明した一致したセクションの後の文字列の終わりまでのその他のものです。
于 2012-12-03T14:50:58.323 に答える
1

文字列が常に[ID:1234]の場合は、このようになります。

$str='Lorem ipsum dolor sit amet, [ID: 123] Suspendisse [blahsh 68] condimentu';
preg_match_all("~\[ID:\s(.*?\d+)\]~",$str,$match);
echo $match[1][0];
于 2012-12-03T14:57:46.680 に答える