歡迎來到小豬圈!

Showing posts with label RegularExpressions. Show all posts
Showing posts with label RegularExpressions. Show all posts

2009-04-22

將字串分割為字元陣列

  • PHP 支援用陣列的方式存取字串的字元 $string[1] ,但不能直接將字串用在迴圈上。
  • 上述方式與 str_split() 會有中文斷字的問題,preg_split() 沒有加 u (utf-8 mode)修飾字符也會有一樣問題。
  • 這種情況下 mb_split 派不上用場,雖然支援 regular expression 但不能用空的 pattern (不用 start/end delimiter)。
  • 兩個解決方案之一是用 mb_* 自已寫函式處理,另一個就是用 preg_split() 加上 u 修飾字符,見範例:
    
    <?php
    function string_to_array ($string) {
      $array = array();
      $strlen mb_strlen($string);
      for ($i=0$i<$strlen$i++) {
        $array[] = mb_substr($string$i1'UTF-8');
      }
      return $array;
    }
    
    $string '中文字測試';
    
    str_split($string);
    
    preg_split("//"$string);
    
    mb_split(""$string); // Warning: mb_split(): Empty regular expression
    
    preg_split("//u"$string); //This modifier is available from PHP 4.1.0/Unix and from PHP 4.2.3/win32
    
    var_dump(string_to_array($string));
    ?>
    
    

2007-10-15

用 RegExp 抓圖

  • 昨天為抓漫畫(謎),寫了小一段PHP,因為它用亂數檔名但沒有擋圖片外連,所以把所有網頁抓下來,用 Regular Expressions 把目錄裡所有網頁裡的圖片連結抓出來。
  • Regular Expressions 真的是說難不難;說簡單是一點都不簡單。
  • <?php
    $dir = 'tmp';
    $files = scandir($dir);
    array_shift($files); //移掉 . (本目錄)
    array_shift($files); //移掉 .. (上層目錄)
    
    foreach ($files as $i => $v) {
      $s = file_get_contents($dir. '/' . $v);
      $x = preg_replace('/[\S\s]+img src=(\S+) border=1[\S\s]+/i', '${1}', $s);
      echo "<a href=$x>$v</a><br>";
    }
    ?>
    

標籤分類

Labels

Google Analytics Tracking Code

About Me

My photo
Keelung, R.O.C, Taiwan
一個不學無術、混吃等死的傢伙…