2011-11-23 97 views
0

这是我的代码:正则表达式(preg_match_all)

<?php 
    $matchWith = "http://videosite.com/ID123"; 
    preg_match_all('/\S\/videosite\.com\/(\w+)\S/i', $matchWith, $matches); 
    foreach($matches[1] as $value) 
    { 
      print '<a href="http://videosite.com/'.$value.'"> 
    Hyperlink 
    </a>';   

    } 
    ?> 

它不工作。 我想排除链接之前或之后具有空格的每个匹配(带有ID)。 为此,我使用了\S

例如,如果:

$matchWith = " http://videosite.com/ID123 "; 

它不应该显示任何内容。

谢谢。

回答

0

你缺少开始分隔符和转义:

preg_match_all('/\S\/videosite\.com\/(\w+)\S/i', $matchWith, $matches); 
       ^^ 
+0

使用此代码我总是会得到一个空白页。谢谢 – Helena

+0

现在我不再有一个空白页面,但它仍然显示链接,如果像'$ matchWith =“http://videosite.com/ID123”;' – Helena

0

你乱放的正则表达式的斜线。 尝试使用以下内容:

preg_match_all('/\Svideosite\.com\/(\w+)\S/i', $matchWith, $matches); 
+0

这样的链接之前或之后有空格,现在我不再有空白页面,但是如果有空格,它仍然显示链接。例如,如果'$ matchWith =“http://videosite.com/ID123”;'那么它就不能显示链接,因为它在链接之前或之后都有空白。谢谢 – Helena

+0

所以你必须在你的regex中嵌入http://,或者在第一次传递后使用第二个正则表达式。 – Lao

相关问题