0 レビュー
3 回答
regex-一致を返さないphp正規表現
非常に単純な正規表現の設定があります。
preg_match('/[0-9]*/', $item, $id);
$itemの文字列値は"<li class="page_item page-item-29 current_page_item"><a href="http://dcdc.siretesting.com/programs/child-care/" title="Child Care">Child Care</a></li>
"
print_r($id)
の場合、空の配列を取得します Array([0] =>)
http://regexpal.com/ を使用してテストしたところ、期待どおりに選択されました。数字の29を強調しています
PHPで正しく一致しない理由がわかりません。
わからない
0
レビュー
答え :
解決策:
パターンに誤解されている可能性があります:
/[0-9]*/
*
は、0個以上の文字に一致させることを通知します。 preg_match
はこれを行い、文字クラス [0-9]
のゼロを正常に検出し、空の文字列を返します。
あなたはこれを意味するかもしれません:
/ [0-9] + /
+
は、代わりに1つ以上を照合することを通知します。
Regexpalは、最初の一致だけでなく、すべての一致を提供します。 preg_match _all
で参照:デモ。
わからない
0
レビュー
答え :
解決策:
これは注意して使用してください...
if (preg_match('/\d+/', $subject, $regs)) {
$result = $regs[0];
}
編集:
\ d +は、件名文字列内の最初の数字のシーケンスにのみ一致するため、注意して使用してください。そうですね、それを使用するのはあまり安全ではありません。
わからない
0
レビュー
答え :
解決策:
{-code-code-なので、
はゼロインスタンスに一致します。 *
の代わりに+
を使用します2} +
経由で1つ以上必要です。
preg_match('/ [0-9] + /'、$ item、$ id);
print_r($ id);
配列
((
[0] => 29
)。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。