Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

Дополнительная литература.

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

Ответ 2

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

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

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

UPDATE

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

Не лучший способ...

Ответ 3

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