1

Web サイトから新しい本を入手するのに役立つスクリプトを作成しようとしています。

私は preg_match_all で作業しています。取得する情報は 7 つあります: タイトル、著者、編集者...

preg マッチ マスクの作成に問題があります。たとえば、ここから製品コードが必要です。各ページには、3 ~ 10 個のコード製品があります。:

<li><label>Réf : </label>21608</li>

最初に私はこれを試しています:

$mask ="/Réf :(.*)<\/li>/Us";

仕事ですが、数字だけが欲しいです。Web で正規表現ガイドを検索していますが、目的の構文を使用する方法がわかりません。このコード製品は : のような 2 つのタグの間にないためです<open>...</open>。このコード製品には 4 つまたは 5 つの数字があります。

助けてくれてありがとう!

4

3 に答える 3

1

次の正規表現を試してください。

/Réf :\D*(\d+)<\/li>/
  • \D: 数字以外
  • \d: 桁
于 2013-07-03T10:23:30.560 に答える
0

これらの数字を一致させるために、段階的に試してみましょう。

  1. があります。Réfそれを作成/réf/iし、修飾子を使用してi大文字と小文字を区別しないようにします。
  2. があり、それを動的にして、ゼロ回以上の空白に一致するものspace : spaceと一致させましょう\s*/réf\s*:\s*/i
  3. 次に、数字がまったくありません。数字\D*以外のすべてに一致する which を使用できます。/réf\s*:\s*\D*/i
  4. 4 ~ 5 桁あることがわかっているので\d{4,5}、数字に 4 ~ 5 回一致するものを使用します。/réf\s*:\s*\D*\d{4,5}/i
  5. 数字だけが必要なので、それらをグループに入れましょう。/réf\s*:\s*\D*(\d{4,5})/i

PHP コード

$string = '<li><label>Réf : </label>21608</li>';
preg_match_all('/réf\s*:\s*\D*(\d{4,5})/i', $string, $m);
print_r($m[1]);

出力

Array
(
    [0] => 21608
)
于 2013-07-03T10:28:50.983 に答える
0

これを試して...

/>\s*(\d{3,10})\s*</
于 2013-07-03T10:26:25.717 に答える