PHP正規表現で、「タブ区切り」から「タブ区切り」までを選択して、前後にdivタグを挿入


■対象

[code]

    $hoge="××××
    
    tab→    抽出抽出    ←tab
    
    ××××××";
    
[/code]

* * *

■やりたいこと1  
・PHP正規表現で、「タブ区切り」から「タブ区切り」までを選択して、前後にdivタグを挿入したい

・うまくいかないコード

[code]

    preg_replace(/\t(.*?)\t)/m, "<div>$1</div>", $hoge);
    
[/code]

・希望結果1

[code]

    $hoge="××××
    
    tab→<div>抽出抽出</div>←tab
    
    ××××××";
    
[/code]

* * *

■やりたいこと2  
・PHP正規表現で、「空行」から「空行」までを選択して、前後にdivタグを挿入したい

・うまくいかないコード

[code]

    preg_replace(/^\n(.*?)^\n)/m, "<div>$1</div>", $hoge);
    
[/code]

・希望結果2

[code]

    $hoge="××××
    <div>
    tab→    抽出抽出    ←tab
    </div>
    ××××××";
    
[/code]




■ 1つ目

[code]

    $hoge="××××
    
    tab→    抽出抽出    ←tab
    
    ××××××";
    
    echo "\nbefore:\n", $hoge;
    $replace = preg_replace('/\t([^\t]+)\t/', '<div>$1</div>', $hoge);
    echo "\nafter:\n", $replace;
    
[/code]

で、こんなのが得られるのでは所望の動きではないでしょうか？

[code]

    before:
    ××××
    
    tab→   抽出抽出        ←tab
    
    ××××××
    after:
    ××××
    
    tab→<div>抽出抽出</div>←tab
    
    ××××××
    
[/code]

■ 2つ目  
(2015-02-12 11:41 編集)  
手直ししてみました。こういう事がやりたいんですかね？  
ちょっと自分の実力では1つの正規表現では表しきれなかったです。(´・ω・`)

[code]

    <?php
    $hoge="××××
    
    tab→    抽出 抽出
    抽出    ←tab
    
    ××××××";
    
    echo "\nbefore:\n", $hoge;
    $replace = preg_replace('/(?<=\n\n)(.*)(\n)(.*)(?=\n\n)/s', '$1 $3', $hoge);
    $replace = preg_replace('/\n\n(.+)\n\n/s', '<div>$1</div>', $replace);
    echo "\nafter:\n", $replace;
    ?>
    
[/code]

で、こんなのが得られるのでは所望の動きではないでしょうか？

[code]

    before:
    ××××
    
    tab→   抽出 抽出
    抽出    ←tab
    
    ××××××
    after:
    ××××<div>tab→      抽出 抽出 抽出  ←tab</div>××××××
    
[/code]




■ 1つ目

[code]

    $hoge="××××
    
    tab→    抽出抽出    ←tab
    
    ××××××";
    
    echo "\nbefore:\n", $hoge;
    $replace = preg_replace('/\t([^\t]+)\t/', '<div>$1</div>', $hoge);
    echo "\nafter:\n", $replace;
    
[/code]

で、こんなのが得られるのでは所望の動きではないでしょうか？

[code]

    before:
    ××××
    
    tab→   抽出抽出        ←tab
    
    ××××××
    after:
    ××××
    
    tab→<div>抽出抽出</div>←tab
    
    ××××××
    
[/code]

■ 2つ目  
(2015-02-12 11:41 編集)  
手直ししてみました。こういう事がやりたいんですかね？  
ちょっと自分の実力では1つの正規表現では表しきれなかったです。(´・ω・`)

[code]

    <?php
    $hoge="××××
    
    tab→    抽出 抽出
    抽出    ←tab
    
    ××××××";
    
    echo "\nbefore:\n", $hoge;
    $replace = preg_replace('/(?<=\n\n)(.*)(\n)(.*)(?=\n\n)/s', '$1 $3', $hoge);
    $replace = preg_replace('/\n\n(.+)\n\n/s', '<div>$1</div>', $replace);
    echo "\nafter:\n", $replace;
    ?>
    
[/code]

で、こんなのが得られるのでは所望の動きではないでしょうか？

[code]

    before:
    ××××
    
    tab→   抽出 抽出
    抽出    ←tab
    
    ××××××
    after:
    ××××<div>tab→      抽出 抽出 抽出  ←tab</div>××××××
    
[/code]

