2012-09-03 5 views
0

나 자신을 할 수없는 패턴에 대한 도움이 필요합니다. PHP Preg_match_all regexp pattern

나는이 파일을 가지고 :

description1="SIOUH : Authentification Cerbere - Acces" 
    description2="Acces formulaire authentification SIOUH" 
    addheader="Pragma: no-cache " 
    method="get" 
    url="${AUTH_URL}/login/LoginDispatchAction.do?appId=${APP_ID}&backURL=${APP_URL_ENC}" 
    errormessage="Phase 1 : Impossible atteindre le formulaire authentification CERBERE pour SIOUH" 
    serveur="yes" 
    verifypositive="loginConnectAppliForm" 
    logrequest="yes" logresponse="no" /> 

을 나는 완벽하게 작동이으로, preg_match_all 있습니다

preg_match_all ('#(.*?)="(.*?)"#s', $contents, $matches, PREG_SET_ORDER); //Chaque option 

내 문제는 내가 내 패턴을 변경하는 방법 대신에 이중의 간단한 따옴표를 가질 수있다 처리해? 예, 나는 모든 다른 이들처럼이 줄을 잡을해야합니다

parseresponse='name="conversationId" value="|"' 

는 당신의 도움을 많이 감사합니다.

답변

1

liek 정규식을 사용하는 : 내가 [logrequest = "예"logresponse을 가질 수 있듯이

'#(.*?)=([\'"])(.*?)\2#' 
+0

완벽하지 않았습니다. # (. *?)))) # '그러나 (# :. *?) = (? : (? :?) \') 네가 더 낫다. 고마워! – timmalos

1

시도가 오프닝 하나와 일치하는 닫는 따옴표를 요구하는 역 참조를 사용하여이

^(.*?)=[\'"](.*?)[\'"]$ 
+0

을 = " 예 "] 한 줄에, 나는 사용할 수 없습니다^및 $ i nmy regexp. 내가 [\ 사용하는 경우 ' "] 대신 내의를"나는이있어 : 배열 ( [0] => parseresponse ='이름 = " [1] => [2] => 이름 parseresponse = ) 왜냐하면 나는 간단한 견적 (parsereponse가 패턴이다)에서 이중 인용문을 얻었 기 때문에 안된다. – timmalos

+0

그런 다음 탐욕스런 캡쳐를 사용하려고한다 - 둥근 괄호의 두 번째 그룹에서 제거 – BSen

+0

'# (\ w *?) = [ "\ '] (. *) ["\'] # '같은 줄에있는 [logrequest = "예"logresponse = "예"]와 문제가 있습니다. – timmalos