腦友記廣場 -> 新手上路 -> 怎樣換這種內容呢...? 登錄 -> 註冊 -> 回復主題 -> 發表主題

zozzen 2008-02-26 16:27
請問如果要換走的內容是這樣, 可以怎樣做呢?


<div id="code">


  <div id="title"> <---- 呢度開始
    <div class="content">
          <li> ...... </li>
          <li> ...... </li>
          <li> ...... </li>
          <li> ...... </li>
          <li> ...... </li>
          </div>
  </div>
<---- 換到呢度

  <li> ...... </li>
  <li> ...... </li>
  <li> ...... </li>
  <li> ...... </li>
  <li> ...... </li>
  <li> ...... </li>
</div>


如果使用 eregi_replace("<div id=\"title\">(.*)</div>, "", $input>,
結果會換到咁樣:


<div id="code">

  <div id="title">
    <div class="content">
          <li> ...... </li>
          <li> ...... </li>
          <li> ...... </li>
          <li> ...... </li>
          <li> ...... </li>
          </div>
  </div>

  <li> ...... </li>
  <li> ...... </li>
  <li> ...... </li>
  <li> ...... </li>
  <li> ...... </li>
  <li> ...... </li>
</div>



請教大家知唔知一些 regular expression, 是可以換了這一段內容呢?

不勝感謝!

maninnet 2008-02-26 17:38
可以用 preg_match:
preg_match("/<div id=\"title"> (.*?)<\/div>/is",$input,$matches);
$content = $matches[1]."</div>";

zozzen 2008-02-26 17:40
唔該晒網兄, 好複雜啊,
請問 /is 這種語法是甚麼呢? 看上去不似 regular expression 的範圍.

maninnet 2008-02-26 20:17
由於 eregi 的 matches (.*) 是找到最後一個, 而 perl 可用 (.*?)則找最近一個, php 又沒有 (.*?) 的用法, 所以借用 perl 語法的 preg_match:
/<div id=\"title\"> (.*?)<\/div>/is
i 是表示不理會大小寫
s 內容有換行字符(newline, 表示有多行)

zozzen 2008-02-26 22:09
謨拜網兄中~~~~~!


查看完整版本: [-- 怎樣換這種內容呢...? --] [-- top --]


Powered by PHPWind v4.0.1 Code © 2003-05 PHPWind
Gzip enabled

You can contact us