0

preg_matchを使用して数値のみを抽出しようとしています。次のコードを試しましたが、機能しません。番号だけを取得する方法はありますか?

preg_match_all('/^[0-9]+$/i', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);
4

5 に答える 5

0

正規表現には、文字列の途中に存在しない文字列の開始と終了を示す記号^と記号を含めないでください。$

それらを取り出すと、正規表現は問題なく機能するはずです。

于 2012-08-15T08:00:54.063 に答える
0

記号^は、行の開始と$- 行の終わりを指定します。したがって、RegExpは完全に間違っています。あなたは書くべきです

preg_match_all('/\d+/', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);

また、修飾子を指定する必要はありませんi。つまり、大文字と小文字を区別しないモードで検索します。

于 2012-08-15T08:02:26.480 に答える
0

正規表現で ^andを使用しました。は文字列の先頭に一致することを意味し、文字列の末尾に一致することを意味します。そのため、数値のみを含む文字列に一致する正規表現を作成しました。つまり、正規表現は、文字列の開始、次に数値文字列の終了を示します。これらの文字を削除すると、数字を一致させることができます。$^$

于 2012-08-15T08:03:08.013 に答える
0

使用する正規表現は次のとおりです。

/<userinfo>.*?(\d+).*?<\/userinfo>/

これは一致します

<userinfo>Jsome text here 16586 more text here.</userinfo>

返された配列の 2 番目の要素 ( array[1]) には、必要な数が含まれます。(16586)

于 2012-08-15T08:27:32.537 に答える
0

やってみました?

preg_match_all('[0-9]+', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);
于 2012-08-15T08:03:34.627 に答える