문제

2011-04-25 8 views
0

안녕하세요 난이 난 테이블에 머리를 두드리는 후 10 배문제

preg_match_all("#>\w*#",$data,$result); 

이 반환 아래 정규 표현식을 사용하여 알아 낸

<option value="http://www.torontoairportlimoflatrate.com/aurora-limousine-service.html">Aurora</option> <option value="http://www.torontoairportlimoflatrate.com/alexandria-limousine-service.html">Alexandria</option>

아래 형식의 데이터 결과는 아래와 같습니다

Array 
(
    [0] => Array 
     (
      [0] => >Ajax 
      [1] => > 
      [2] => >Aurora 
      [3] => > 
      [4] => >Alexandria 
      [5] => > 
      [6] => >Alliston 

나는 오직 하나의 배열을 원한다 havin g 값 즉 도시 [0] => Ajax [>] 오로라 ...... 등등.

탄원

+1

정규식을 사용하지 마십시오. HTML 파서를 사용하십시오. [HTML을 구문 분석하는 데 가장 좋은 방법] (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html) –

+0

이것은 [HTML Parser] (http://stackoverflow.com)의 작업입니다./questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454 # 1732454) –

답변

1

당신은 HTML 파서를 사용하지 않으려면, 당신은 정규식 함께 할,하지만 당신은 아마 당신이로 받게됩니다 내용에 따라 수정해야한다는 점을 명심 수 있습니다 미래의 입력. 특정 문제에 대한,이 작업을 수행하는 정규식입니다 :

<?php 
    preg_match_all('/<option\svalue=\"([a-zA-Z0-9-_.\/:]+)\">([a-zA-Z\s]+)<\/option>/', $data, $result); 

    var_dump($result[2]); 

참고 :

당신이 더 많은 능력의 URL과 일치하는 정규식 ([a-zA-Z0-9-_.\/:]+)를 교체해야합니다 모든 URL을 일치 시키려면. StackOverflow에서도 some을 찾을 수 있지만 나에게 개인적인 취향이 중요합니다.