2012-02-27 14 views
1
$str = 'title="room 5 stars"'; 
preg_match_all('/title="([0-9]+)"/sm', $str, $rate); 

タイトルから5番を取得する必要があります。正規表現は機能しません!Preg_Matchを使用して番号を取得する

私はこれを行う場合は、次の

preg_match_all('/title="([0-9]+)"/sm', $str, $rate); 

私が手:

'/title="([0-9]+)"/sm' 

は私が間違って行くんでした:

room 5 stars 

しかし、この1つは何も返さないのですか?あなたはあなたの番号の前後にテキストを一致させるのを忘れ

$str = 'title="room 5 stars"'; 
preg_match_all('/title=".*(\d+).*"/', $str, $rate); 

// The number is then in $rate[1][0]; 

答えて

3

、これを試してみてください。 で試してみてください:/title=".*([0-9]+).*"/

PS:あなたはメートルオプション

1

:あなたのアカウントに番号の前後の単語を取っていない

0

*は貪欲一致する必要はありません、それは時々間違った結果を与えるかもしれません。

/title=".*?(\d+).*?"/は怠惰な一致であり、最小の文字を検索します。

また、正規表現マッチングのために、この無料のツールを試すことができます:RegExr

+0

は、あなたが実際にあなたの正規表現をテストしたことがありますか?それは文字列と一致しますが、番号を取得しません。 – ohaal

+0

@ohaal no違反ですが、間違いを教えてもらえますか?将来私はそれをしません。グループマッチングのコードを編集しました。 – Vishal

+1

私は以前のコメントで詳しく説明しないことをお詫びします、私は急いでいました。あなたの答えを修正したように見える-1を削除しました。あなたは '/ title ="。*?(\ d)*。*? "/'を持っていましたが、これは実際の数字を捕捉しませんでした。これは、 '*'は '{0、}'と等価であり、非貪欲なマッチ '。*?'はマッチするものがないので、全ての文字列はあなたの最後の非貪欲'。*?'にマッチします。 – ohaal

関連する問題