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

好的,所以我目前正在parsing一个RSS提要。 我已经得到了我不需要的数据,剩下的就是parsing游戏标题。

这里是我现在的代码(忽略马虎,这只是一个概念certificate):

<?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 

我留下的唯一的东西是去掉closures锚标记和时期,但我似乎无法弄清楚为什么它不喜欢“+”。 有任何想法吗?

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

你需要在PHP中使用分隔符和正则expression式。 你可以使用经常使用的/ ,但PHP可以让你使用任何匹配的字符,所以@#是stream行的。

进一步阅读 。

如果要在正则expression式中插入variables,请确保将您select的分隔符作为preg_quote()的第二个parameter passing。

试试这个代码:

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

使用/作为分隔符意味着你也需要在这里转义它,就像这样:<\ / a>。

UPDATE

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

可能不是最好的方法…

这发生在我身上,因为我把一个variables放在正则expression式中,有时它的string值包含一个斜杠。 解决scheme: preg_quote 。

可能是这将是有用的你: ReGExp在线编辑器