2011-04-25 73 views
0

您好我有如下格式的数据问题PHP正则表达式

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

我敲我的脑袋上表经过10次想出使用下面

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

这将返回正则表达式结果如下

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

我只想要单个数组havin g值,即 城市 [0] => Ajax [1] =>极光 ......等等。

普莱斯

+1

请勿使用正则表达式。使用HTML解析器。请参阅[解析HTML的最佳方法](http://stackoverflow.com/questions/3577641/best-methods-to-parse-html) – 2011-04-25 06:44:23

+0

这是[HTML解析器]的工作(http://stackoverflow.com /问题/ 1732348 /正则表达式匹配开放标签,除了-XHTML-自足标签/ 1732454#1732454) – 2011-04-25 06:45:46

回答

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-_.\/:]+)匹配。您也可以在StackOverflow上找到some,但对我而言,这是个人品味的问题。