preg_match (); – Неизвестный модификатор '+'

Хорошо, поэтому я сейчас работаю над разбором 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 

Единственное, что у меня осталось – это вырезать закрывающий якорный тег и период, но я не могу понять, почему ему не нравится «+». Есть идеи?

Изменить: это не должно быть отмечено как дубликат, как было задано за два года до другого вопроса.

Вам нужно использовать разделители с регулярными выражениями в PHP. Вы можете использовать часто используемые / , но PHP позволяет использовать любые соответствующие символы, поэтому @ и # являются популярными.

Дальнейшее чтение .

Если вы интерполируете переменные внутри своего регулярного выражения, обязательно передайте разделитель, который вы выбрали в качестве второго аргумента для preg_quote() .

Попробуйте этот код:

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

Использование / в качестве разделителя означает, что вам также нужно избегать его здесь, например: <\ / a>.

ОБНОВИТЬ

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

Не может быть лучшим способом …

Это произошло со мной, потому что я поместил переменную в регулярное выражение, и иногда ее строковое значение включало косую черту. Решение: preg_quote .

Может быть, это будет полезно для u: онлайновый редактор ReGExp