正则表达式(preg_match_all)和数组

时间:2011-11-23 00:03:55

标签: php arrays multidimensional-array preg-match preg-match-all

这是代码:

   <?php
    $matchWith = "# http://videosite.com/id1 http://videosite.com/id2 # # http://videosite.com/id3 http://videosite.com/id4 #";

    preg_match_all('%(#)\shttp://videosite\.com/(\w+)\r{0,1}\shttp://videosite\.com/(\w+)\r{0,1}\s(#)%', $matchWith, $result);
    foreach($result[2] as $value)
    {  
    print '<a href="http://videosite.com/'.$value.'">
    First Part
    </a>';        

    }  
    foreach($result[3] as $value)
    {  
    print '<a href="http://videosite.com/'.$value.'">
    Second Part
    </a>';        
    }
    ?>

问题:

我希望它显示如下:第一部分,第二部分和第一部分第二部分。

但它显示如下:第一部分,第一部分,第二部分,第二部分。

我真的希望你理解。 谢谢

2 个答案:

答案 0 :(得分:2)

   <?php
    $matchWith = "# http://videosite.com/id1 http://videosite.com/id2 # # http://videosite.com/id3 http://videosite.com/id4 #";

    preg_match_all('%(#)\shttp://videosite\.com/(\w+)\r{0,1}\shttp://videosite\.com/(\w+)\r{0,1}\s(#)%', $matchWith, $result);
    for($i = 0; $i < count($result[2]); $i++){
       print '<a href="http://videosite.com/'.$result[2][$i].'">
       First Part
       </a>';
       print '<a href="http://videosite.com/'.$result[3][$i].'">
       Second Part
       </a>';     
    }
    ?>

答案假设这两个数组具有并行结构。

编辑:将$ i ==更改为$ i ++

答案 1 :(得分:0)

这是你想要的吗?

for($i = 0; $i < count($result); $i++)
{  
    print '<a href="http://videosite.com/'.$result[$1][2].'">
    First Part
    </a>';        

    print '<a href="http://videosite.com/'.$result[$1][3].'">
    Second Part
    </a>'; 
}