D'accord, je travaille actuellement sur l'analyse d'un flux RSS. J'ai obtenu les données dont j'ai besoin sans problème, et il ne me reste plus qu'à analyser le titre du jeu.
Voici le code que j'ai actuellement (ignorez la négligence, c'est juste une preuve de concept):
<?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;
?>
Tout fonctionnait très bien, mais j'ai commencé à obtenir cette erreur:
Warning: preg_match() [function.preg-match]:
Unknown modifier '+' in raptr.php on line 14
La seule chose qui me reste est de supprimer la balise d'ancrage de fermeture et la période, mais je n'arrive pas à comprendre pourquoi il n'aime pas le "+". Des idées?
Modifier: Cela ne doit pas être marqué comme un double car il a été demandé deux ans avant l'autre question.
Vous devez utiliser des délimiteurs avec des expressions rationnelles en PHP. Vous pouvez utiliser le /
Souvent utilisé, mais PHP vous permet d'utiliser tous les caractères correspondants, donc @
Et #
Sont populaires.
Si vous interpolez des variables à l'intérieur de votre expression régulière, assurez-vous de passer le délimiteur que vous avez choisi comme deuxième argument à preg_quote()
.
Essayez ce code:
preg_match('/[a-zA-Z]+<\/a>.$/', $lastgame, $match);
print_r($match);
En utilisant /
comme délimiteur signifie que vous devez également l'échapper ici, comme ceci: <\/a>.
MISE À JOUR
preg_match('/<a.*<a.*>(.*)</', $lastgame, $match);
echo'['.$match[1].']';
Ce n'est peut-être pas la meilleure façon ...
Cela m'est arrivé parce que j'ai mis une variable dans l'expression régulière et parfois sa valeur de chaîne comprenait une barre oblique. Solution: preg_quote .
Cela peut être utile pour u: éditeur en ligne ReGEx