2011-11-07 95 views
0

我试图解析一个网页。 基本上它被存储在一个字符串,它看起来就像这样:PHP正则表达式:忽略定义的子串之前的所有内容

"[HTML CODE ...]world:[HTML CODE ...]my_number[REST OF HTML_CODE ...]" 

当然,“世界”和“MY_NUMBER”是HTML代码的一部分,不过,我想第一次出现之前,不顾一切“世界:”。我需要的是在第一次出现“world:”之后出现的第一个数字,牢记一堆html代码会介于这两个数字之间。 我可以子字符串的HTML代码,但我想这样做只是通过使用一个正则表达式,如果可能的话。

这是正则表达式我试图匹配:

'/(?<=world:)\D+?[0-9]+/' 

但这返回我的“世界”之间的所有HTML的东西,我的电话号码。

谢谢!

+0

您可以删除之前的一切,包括“世界”,然后找到剩下的字符串中的第一个号码。 – Thai

+0

正如我写的,我可以将html代码子字符串,但我只想在可能的情况下仅使用正则表达式来完成此操作。没有特别的原因,我只是想提高我的正则表达式知识 – user586883

回答

0

我觉得你已经接近了。我可以在你提供的字符串上使用它。

$subject = "[HTML CODE ...]world:[HTML CODE ...]3334[REST OF HTML_CODE ...]"; 
$pattern = "/world:\D+?(?<my_number>[0-9]+)/"; 
$matches = array(); 

$result = preg_match_all($pattern, $subject, &$matches); 

print_r($matches); 

结果:

Array 
(
    [0] => Array 
     (
      [0] => world:[HTML CODE ...]3334 
     ) 

    [my_number] => Array 
     (
      [0] => 3334 
     ) 

    [1] => Array 
     (
      [0] => 3334 
     ) 

) 
+0

我得到了和我一样的结果,它与我提供的字符串很好地工作,它不会与html页面一起工作,并且这会返回“world:”部分,我不想要 – user586883

+0

我已经编辑它以返回一个名为'my_number'的键,以便查找值。 – hafichuk

+0

这个工程!万分感谢! – user586883

相关问题