Heim  >  Artikel  >  Backend-Entwicklung  >  区域内匹配的正则表达式应该怎么写?

区域内匹配的正则表达式应该怎么写?

WBOY
WBOYOriginal
2016-07-06 13:54:121238Durchsuche

<code>有一个$link="url",打开后代码如下:

    ......
     <div class="news_list">
            <ul>
             <li>
              <span>2016-06-06</span>
              <a href="/news!show.action?id=f435345c44e04ec3a5e6ccedca29e061">羊山新区2016年14条道路绿化工程招标公告</a>
              </li>
            <li>
              <span>2016-06-06</span>
              <a href="/news!show.action?id=ad4b065149d94704b3d295287f863b5a">平桥区明港镇井庄路口-垃圾处理场-何岗村南路口(K0+000-K4+300)公路改建工程施工招标公告</a>
              </li>
           <li>
              <span>2016-05-31</span>
              <a href="/news!show.action?id=c3b688ae2ec54fb0880a0f60f7a4f5f0">信阳市中心医院羊山分院人防工程监理招标公告</a>
              </li>
            <li>
              <span>2016-05-31</span>
              <a href="/news!show.action?id=2a7060f3519b40b3aa766dd53f2b00ad">信阳市儿童医院病房楼建设项目施工及监理项目招标公告</a>
              </li>
            </ul>
        </div>
        <!--分页-->
        <div class="page_num">
        ......


<pre class="brush:php;toolbar:false"><code>目标:获得<div class="news_list">......<div class="page_num">中href标签里的内容"/news!show.action?id=2a7060f3519b40b3aa766dd53f2b00ad"

我写的代码如下:
//获取链接中的内容
$htmlContent=file_get_contents("$link");
//获取链接
$num=preg_match_all("/<div.>.*?(href=\".*?\").*<div.>/is",$htmlContent,$array);
//打印数组
var_dump($array[1]);

目前卡顿的地方:在  //获取链接  处,子表达式只能获取一个结果,而且不是想要的href标签中的内容。

                            
                        


                                                                                                                        
                     <h2>回复内容:</h2>
                      
                                                            
<pre class="brush:php;toolbar:false"><code>有一个$link="url",打开后代码如下:

    ......
     <div class="news_list">
            <ul>
             <li>
              <span>2016-06-06</span>
              <a href="/news!show.action?id=f435345c44e04ec3a5e6ccedca29e061">羊山新区2016年14条道路绿化工程招标公告</a>
              </li>
            <li>
              <span>2016-06-06</span>
              <a href="/news!show.action?id=ad4b065149d94704b3d295287f863b5a">平桥区明港镇井庄路口-垃圾处理场-何岗村南路口(K0+000-K4+300)公路改建工程施工招标公告</a>
              </li>
           <li>
              <span>2016-05-31</span>
              <a href="/news!show.action?id=c3b688ae2ec54fb0880a0f60f7a4f5f0">信阳市中心医院羊山分院人防工程监理招标公告</a>
              </li>
            <li>
              <span>2016-05-31</span>
              <a href="/news!show.action?id=2a7060f3519b40b3aa766dd53f2b00ad">信阳市儿童医院病房楼建设项目施工及监理项目招标公告</a>
              </li>
            </ul>
        </div>
        <!--分页-->
        <div class="page_num">
        ......


<pre class="brush:php;toolbar:false"><code>目标:获得<div class="news_list">......<div class="page_num">中href标签里的内容"/news!show.action?id=2a7060f3519b40b3aa766dd53f2b00ad"

我写的代码如下:
//获取链接中的内容
$htmlContent=file_get_contents("$link");
//获取链接
$num=preg_match_all("/<div.>.*?(href=\".*?\").*<div.>/is",$htmlContent,$array);
//打印数组
var_dump($array[1]);

目前卡顿的地方:在  //获取链接  处,子表达式只能获取一个结果,而且不是想要的href标签中的内容。

                            
                        
            <p class="answer fmt" data-id="1020000005671716">
                                    
</p>
<p>环视应该可以满足你现在的需求</p>
<pre class="brush:php;toolbar:false"><code class="php">preg_match_all('/(?\d{4}-\d{2}-\d{2})(?:.*?href=\")(.*?)(?:\".*?)(?=)/is', $a, $matches);</code>
<code>array(2) {
  [0]=>
  array(4) {
    [0]=>
    string(152) "
              <a href="/news!show.action?id=f435345c44e04ec3a5e6ccedca29e061">羊山新区2016年14条道路绿化工程招标公告</a>
              "
    [1]=>
    string(218) "
              <a href="/news!show.action?id=ad4b065149d94704b3d295287f863b5a">平桥区明港镇井庄路口-垃圾处理场-何岗村南路口(K0+000-K4+300)公路改建工程施工招标公告</a>
              "
    [2]=>
    string(161) "
              <a href="/news!show.action?id=c3b688ae2ec54fb0880a0f60f7a4f5f0">信阳市中心医院羊山分院人防工程监理招标公告</a>
              "
    [3]=>
    string(173) "
              <a href="/news!show.action?id=2a7060f3519b40b3aa766dd53f2b00ad">信阳市儿童医院病房楼建设项目施工及监理项目招标公告</a>
              "
  }
  [1]=>
  array(4) {
    [0]=>
    string(53) "/news!show.action?id=f435345c44e04ec3a5e6ccedca29e061"
    [1]=>
    string(53) "/news!show.action?id=ad4b065149d94704b3d295287f863b5a"
    [2]=>
    string(53) "/news!show.action?id=c3b688ae2ec54fb0880a0f60f7a4f5f0"
    [3]=>
    string(53) "/news!show.action?id=2a7060f3519b40b3aa766dd53f2b00ad"
  }
}</code>

原因:只有一个match的结果当然子表达式也只有一个结果.

如果改成:

<code>$num = preg_match_all("/.*?(href=\".*?\").*?/is", $htmlContent, $array);</code>

有四个match结果就有4个匹配了..

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:laravel 5.1 如何生成空的controller ?Nächster Artikel:百度编辑器如何更改下拉框的字体选择

In Verbindung stehende Artikel

Mehr sehen