preg_match(); - Unknown modifier '+' [duplicate]

笑着哭i 提交于 2019-11-26 06:46:53

问题


Alright, so I\'m currently working on parsing an RSS feed. I\'ve gotten the data I need no problem, and all I have left is parsing the game title.

Here is the code I currently have (ignore the sloppiness, it is just a proof of 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;
?>

Everything was working great, but then I started getting this error:

Warning: preg_match() [function.preg-match]: 
Unknown modifier \'+\' in raptr.php on line 14

The only thing I have left is to strip out the closing anchor tag and the period, but I can\'t seem to figure out why it isn\'t liking the \'+\'. Any ideas?

Edit: This should not be marked as a duplicate as it was asked two years before the other question.


回答1:


You need to use delimiters with regexes in PHP. You can use the often used /, but PHP lets you use any matching characters, so @ and # are popular.

Further Reading.

If you are interpolating variables inside your regex, be sure to pass the delimiter you chose as the second argument to preg_quote().




回答2:


Try this code:

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

Using / as a delimiter means you also need to escape it here, like so: <\/a>.

UPDATE

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

Might not be the best way...




回答3:


This happened to me because I put a variable in the regex and sometimes its string value included a slash. Solution: preg_quote.




回答4:


May be this will be usefull for u: ReGExp on-line editor



来源:https://stackoverflow.com/questions/5589807/preg-match-unknown-modifier

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!