的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在线编辑器