0

次の正規表現が正しく機能しません。

preg_match('Currently: ([0-9\.km,]+)', $data, $matches)   

$data 内の情報は次のとおりです。「現在の内容: 52,523」(約 30 行の html と共に)。

次のエラーが発生し続けます。Warning: preg_match(): Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\test\test.php on line 49

注: 行 49 には、上で投稿した preg_match が含まれています。

編集: 申し訳ありませんが、matches パラメータを追加するのを忘れていました。

4

3 に答える 3

5

preg_match 関数では、パターンに区切り文字が必要です。

preg_match('/Currently: ([0-9\.km,]+)/', $data, $matches)   

編集:

コメントで説明されているように

@JoséRobertoAraújoJúniorcurl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);それがあなたの言いたいことなら、はい、私はそれを設定しました。iecho $dataの場合、Web ページが表示されます。これは、すべての html タグがまだ含まれていることを意味します。

次に、 と の間に空白が含まれている可能性があるため$data、通常の空白の代わりに追加することにより、これをパターンで考慮する必要があります。これは、 PCRE 正規表現構文のドキュメント ページで説明されているように、任意の空白文字と一致します。Currently:(...)\s+\s

preg_match('/Currently:\s+([0-9\.km,]+)/', $data, $matches) 

ライブ テスト: http://codepad.viper-7.com/xJNisE

于 2012-12-13T11:47:20.047 に答える
1

パターンの最初と最後に同じ文字を追加する必要があります。

preg_match('/Currently: ([0-9\.km,]+)/', $data)   

この文字は、エスケープしない限り、パターン内に表示できません。次に例を示します。

preg_match('/<example><\/example>/', $xml)  

他の文字を区切り文字として使用できます。最もよく使用されるの/#

于 2012-12-13T11:46:46.873 に答える
1

この編集のように区切り文字を使用する必要があります

$data = 'What it is Currently: 52,523';
preg_match('&Currently: ([0-9\.km,]+)&', $data, $match);
print_r($match);

実際の例http://codepad.viper-7.com/QGOoXT

于 2012-12-13T11:47:56.510 に答える