preg_matchを使用して数値のみを抽出しようとしています。次のコードを試しましたが、機能しません。番号だけを取得する方法はありますか?
preg_match_all('/^[0-9]+$/i', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);
preg_matchを使用して数値のみを抽出しようとしています。次のコードを試しましたが、機能しません。番号だけを取得する方法はありますか?
preg_match_all('/^[0-9]+$/i', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);
正規表現には、文字列の途中に存在しない文字列の開始と終了を示す記号^
と記号を含めないでください。$
それらを取り出すと、正規表現は問題なく機能するはずです。
記号^
は、行の開始と$
- 行の終わりを指定します。したがって、RegExpは完全に間違っています。あなたは書くべきです
preg_match_all('/\d+/', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);
また、修飾子を指定する必要はありませんi
。つまり、大文字と小文字を区別しないモードで検索します。
正規表現で ^
andを使用しました。は文字列の先頭に一致することを意味し、文字列の末尾に一致することを意味します。そのため、数値のみを含む文字列に一致する正規表現を作成しました。つまり、正規表現は、文字列の開始、次に数値、文字列の終了を示します。これらの文字を削除すると、数字を一致させることができます。$
^
$
使用する正規表現は次のとおりです。
/<userinfo>.*?(\d+).*?<\/userinfo>/
これは一致します
<userinfo>Jsome text here 16586 more text here.</userinfo>
返された配列の 2 番目の要素 ( array[1]
) には、必要な数が含まれます。(16586)
やってみました?
preg_match_all('[0-9]+', '<userinfo>Jsome text here 16586 more text here.</userinfo>', $result);