0

Twitter フィードを修正しようとしていて、ツイートのタイム スタンプを個々のツイートのページにリンクしたいと考えていました。

ツイートのタイムスタンプの正規表現を使用して関数を作成しましたが、機能していないようです。

タイムスタンプの形式はabout xx minute(s)/hour(s)/day(s) ago次のとおりです。次の正規表現を使用して記述しました。

$tweet="/about + /[0-9] + / minute[s]|day[s] ago/";

完全に間違っているかもしれませんが、私はこれが初めてで、助けていただければ幸いです。

よろしくお願いします!

編集: 私のフィードの形式: 約 xx 分/時間/日 前: ハッシュタグ/ユーザー名/URL のリンクを含むツイート。

私の関数は基本的に [約 xx 分/時間/日 前] に $tweet 形式と一致するものがあるかどうかをチェックし、https://api.twitter.com/1.1/statuses/を渡します。 user_timeline.json?screen_name=whatever&count=2 のURL です。

問題は、関数が実行されたときに返されるのは、件名 (約 xx 分/時間/日) だけです。php.net で、件名を取得すると、マッチが見つからなかったことを意味することを読みました。これにより、私の正規表現が間違っているという結論に達しました。

だから、私が見つけようとしているのは、私が使用した正規表現が間違っているか正しいかということだと思います。

4

4 に答える 4

0

これで試してください

約 xx 分/時間/日 前

about [0-9]{2} [0-9]{2}/[0-9]{2}/(0?[1-9]|[12][0-9]|3[01]) ago
于 2013-08-29T09:59:40.417 に答える
0
 /about + /[0-9] + / minute[s]|day[s] ago/
        ^        ^
        |        |
        |        |
    repetition one or more: here one or more space then followed 
    by another space

これはあなたが探していたものではないと思います。他にも問題はありますが、私は物事をシンプルに保ち、一度に 1 つの修正を行う傾向があります。これから始めてみませんか?

于 2013-08-29T09:42:20.990 に答える
0

フォローしてみてくださいpreg_match

preg_match('/about ([0-9]+) (minute[s]?|hour[s]?|day[s]?) ago/', $string, $matches);

出力

array (size=3)
  0 => string 'about 53 hour ago' (length=17)
  1 => string '53' (length=2)
  2 => string 'hour' (length=4)

array (size=3)
  0 => string 'about 20 minutes ago' (length=20)
  1 => string '20' (length=2)
  2 => string 'minutes' (length=7)

array (size=3)
  0 => string 'about 2 day ago' (length=15)
  1 => string '2' (length=1)
  2 => string 'day' (length=3)
于 2013-08-29T09:54:56.637 に答える