preg_match();- 未知修饰符“+”

2022-08-30 10:16:04

好吧,所以我目前正在解析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

我唯一剩下的就是去掉结束锚点标签和句点,但我似乎无法弄清楚为什么它不喜欢“+”。有什么想法吗?

编辑:这不应该被标记为重复,因为它在另一个问题之前两年被问到。


答案 1

您需要在 PHP 中使用带有正则表达式的分隔符。你可以使用经常使用的,但是PHP允许你使用任何匹配的字符,所以很受欢迎。/@#

延伸阅读

如果要在正则表达式中插入变量,请确保将选择作为第二个参数的分隔符传递给 preg_quote()。


答案 2

试试这个代码:

preg_match('/[a-zA-Z]+<\/a>.$/', $lastgame, $match);
print_r($match);

用作分隔符意味着您还需要在此处对其进行转义,例如:<\/a>。/

更新

preg_match('/<a.*<a.*>(.*)</', $lastgame, $match);
echo'['.$match[1].']';

可能不是最好的方法...


推荐