使用正则表达式从字符串中提取分段

时间:2014-03-21 13:11:54

标签: php regex

我正在尝试使用正则表达式从我的一个HTML页面中提取文本,但我对如何区分内容的不同部分略有不确定...

考虑这个HTML(代码中实际不存在新行):

Name: SOMETHING_HERE<br>
Gender: SOMETHING_HERE<br>
Age: SOMETHING_HERE<br>
etc...

使用preg_match(),我想获得SOMETHING_HERE的值。所以,在&#39;之后发生的任何事情:&#39;在&#39; <br>&#39;之前我想抓住并添加到matches数组。

到目前为止,这是我有点可怜的尝试:

$regex = '/[^:]+:\s*(.+)\s*\<br\>/i';

以上似乎与整个字符串相匹配而不是每个部分,任何人都可以建议我做错了吗?

2 个答案:

答案 0 :(得分:1)

您可以使用此/:(.*?)<br>/

<?php

$str='Name: SOMETHING_HERE<br>
Gender: SOMETHING_HERE<br>
Age: SOMETHING_HERE<br>';
preg_match_all('/:(.*?)<br>/', $str, $matches);
print_r($matches[1]);

<强> OUTPUT :

Array
(
    [0] =>  SOMETHING_HERE
    [1] =>  SOMETHING_HERE
    [2] =>  SOMETHING_HERE
)

enter image description here

答案 1 :(得分:1)

使用此

(?<=\:\s).*?(?=\<)

正则表达式演示:http://regex101.com/r/sT8xC0