さて、私は現在RSSフィードの解析に取り組んでいます。問題なく必要なデータを取得しました。ゲームタイトルを解析するだけです。
私が現在持っているコードは次のとおりです(ずさんなことは無視してください。これは単なる概念実証です)。
<?php
$url = 'http://raptr.com/conexion/rss';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($result);
$lastgame = $xml->channel->item[0]->description;
preg_match('[a-zA-Z]+</a>.$', $lastgame, $match);
echo $match;
?>
すべてがうまく機能していましたが、このエラーが発生し始めました:
Warning: preg_match() [function.preg-match]:
Unknown modifier '+' in raptr.php on line 14
私が残した唯一のことは、終了アンカータグとピリオドを取り除くことですが、なぜ「+」が好きではないのか理解できないようです。何か案は?
編集:これは、他の質問の2年前に尋ねられたため、重複としてマークされるべきではありません。
PHPの正規表現で区切り文字を使用する必要があります。よく使用される_/
_を使用できますが、PHPでは一致する文字を使用できるため、_@
_と_#
_が一般的です。
さらに読む 。
正規表現内で変数を補間する場合、2番目の引数として選択した区切り文字を preg_quote()
に必ず渡してください。
このコードを試してください:
preg_match('/[a-zA-Z]+<\/a>.$/', $lastgame, $match);
print_r($match);
/
を区切り文字として使用すると、<\/a>のように、ここでもエスケープする必要があります。
[〜#〜] update [〜#〜]
preg_match('/<a.*<a.*>(.*)</', $lastgame, $match);
echo'['.$match[1].']';
最善の方法ではないかもしれません...
これは、正規表現に変数を追加したために発生し、その文字列値にスラッシュが含まれることもありました。解決策: preg_quote 。
これはuに役立つかもしれません: ReGExオンラインエディター