1

这是代码:正则表达式(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
<?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 ++

+0

for循环应该说'$ i ++'而不是'$ i ==',但除此之外,这是正确的。 –

+0

太棒了!只是我正在寻找的答案!你们好棒! :) – Helena

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>'; 
} 
+0

我不确定,因为我收到一条错误消息。但有人刚刚发布了我正在寻找的答案。还是谢谢你:) – Helena