복붙노트

preg_match (); - 알 수없는 수정 자 '+'[중복]

PHP

preg_match (); - 알 수없는 수정 자 '+'[중복]

좋아요, 그래서 저는 현재 RSS 피드를 파싱하는 중입니다. 나는 문제가없는 데이터를 얻었고, 내가 남긴 것은 게임 타이틀을 파싱하는 것이다.

다음은 현재 가지고있는 코드입니다 (sloppiness를 무시하십시오, 그것은 단지 개념 증명입니다) :

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

내가 남긴 유일한 것은 닫는 앵커 태그와 마침표를 제거하는 것이지만 왜 '+'를 좋아하지 않는지 알 수는 없다. 어떤 아이디어?

편집 : 이것은 다른 질문을하기 2 년 전에 질문을 받았기 때문에 중복으로 표시해서는 안됩니다.

해결법

  1. ==============================

    1.PHP에서는 regexes와 함께 구분 기호를 사용해야합니다. /를 자주 사용하지만 PHP는 일치하는 문자를 사용할 수 있으므로 @ 및 #이 많이 사용됩니다.

    PHP에서는 regexes와 함께 구분 기호를 사용해야합니다. /를 자주 사용하지만 PHP는 일치하는 문자를 사용할 수 있으므로 @ 및 #이 많이 사용됩니다.

    추가 독서.

    정규 표현식에서 변수를 삽입 할 경우, 두 번째 인수로 선택한 구분 기호를 preg_quote ()에 전달해야합니다.

  2. ==============================

    2.이 코드를보십시오 :

    이 코드를보십시오 :

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

    /를 구분 기호로 사용하면 다음과 같이 이스케이프해야합니다. <\ / a>.

    최신 정보

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

    최선의 방법은 아닐지 몰라.

  3. ==============================

    3.이것은 내가 정규 표현식에 변수를 넣었고 때로는 문자열 값에 슬래시가 포함 되었기 때문에 나에게 일어났습니다. 해결책 : preg_quote.

    이것은 내가 정규 표현식에 변수를 넣었고 때로는 문자열 값에 슬래시가 포함 되었기 때문에 나에게 일어났습니다. 해결책 : preg_quote.

  4. ==============================

    4.이것은 유익 할 것입니다 : ReGEx 온라인 편집기

    이것은 유익 할 것입니다 : ReGEx 온라인 편집기

  5. from https://stackoverflow.com/questions/5589807/preg-match-unknown-modifier by cc-by-sa and MIT license