preg_match (); - 알 수없는 수정 자 '+'[중복]
PHPpreg_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.PHP에서는 regexes와 함께 구분 기호를 사용해야합니다. /를 자주 사용하지만 PHP는 일치하는 문자를 사용할 수 있으므로 @ 및 #이 많이 사용됩니다.
PHP에서는 regexes와 함께 구분 기호를 사용해야합니다. /를 자주 사용하지만 PHP는 일치하는 문자를 사용할 수 있으므로 @ 및 #이 많이 사용됩니다.
추가 독서.
정규 표현식에서 변수를 삽입 할 경우, 두 번째 인수로 선택한 구분 기호를 preg_quote ()에 전달해야합니다.
-
==============================
2.이 코드를보십시오 :
이 코드를보십시오 :
preg_match('/[a-zA-Z]+<\/a>.$/', $lastgame, $match); print_r($match);
/를 구분 기호로 사용하면 다음과 같이 이스케이프해야합니다. <\ / a>.
최신 정보
preg_match('/<a.*<a.*>(.*)</', $lastgame, $match); echo'['.$match[1].']';
최선의 방법은 아닐지 몰라.
-
==============================
3.이것은 내가 정규 표현식에 변수를 넣었고 때로는 문자열 값에 슬래시가 포함 되었기 때문에 나에게 일어났습니다. 해결책 : preg_quote.
이것은 내가 정규 표현식에 변수를 넣었고 때로는 문자열 값에 슬래시가 포함 되었기 때문에 나에게 일어났습니다. 해결책 : preg_quote.
-
==============================
4.이것은 유익 할 것입니다 : ReGEx 온라인 편집기
이것은 유익 할 것입니다 : ReGEx 온라인 편집기
from https://stackoverflow.com/questions/5589807/preg-match-unknown-modifier by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
Laravel Eloquent를 사용하여 여러 where 절을 만드는 방법은 무엇입니까? (0) | 2018.09.15 |
---|---|
배열을 포함하는 PHP 상수? (0) | 2018.09.15 |
Mysqli_Query 경고 : mysqli_query ()는 매개 변수 1이 mysqli [duplicate]가 될 것으로 기대합니다. (0) | 2018.09.15 |
두 배열 간의 차이 (0) | 2018.09.15 |
경고 : mysqli_connect () : (HY000 / 1045) : 사용자 'username'@ 'localhost'에 대한 액세스가 거부되었습니다 (암호 사용 : 예) (0) | 2018.09.15 |