正则表达式以匹配以前的名称
Regex to match previous names
我在编写正则表达式以匹配此页面上以前的名称时遇到了一些问题:http://steamcommunity.com/id/TripleThreat/namehistory
明确地说,我想要一个数组:
- 三重威胁
- [FD]TripleThreat.blyat
- 9
等等..
我已经尝试编写正则表达式,但这是一场灾难(我正在努力解决)
这是我写的:
$page = file_get_contents(sprintf("http://steamcommunity.com/id/TripleThreat/namehistory"));
preg_match_all("/<span class=\"historyDash\">-<\/span>((.|\n)*)<\/div>/", $page, $matches);
foreach($matches[0] as $match) {
echo($match . "<br/>");
}
非常感谢任何帮助:)
您可以尝试以下正则表达式(匹配项在第一个捕获组中):
"/<span class=\"historyDash\">-<\/span>\s*((?:[^\<]|\n)*?)\s*<\/div>/"
在 Regex101 上查看。
我所做的更改:使用 \s*
修剪前后的空格,将 .
更改为 [^\<]
以仅选择非标记的那些(即,正确的文字)。
注意:正如@PedroLobito 指出的那样,don't parse HTML with regex unless necessary. Use a library to parse the DOM 而不是尽可能。我只是提供了一个简单的例子来扩展你的工作,但这可能不是最好的解决方案。
我在编写正则表达式以匹配此页面上以前的名称时遇到了一些问题:http://steamcommunity.com/id/TripleThreat/namehistory
明确地说,我想要一个数组:
- 三重威胁
- [FD]TripleThreat.blyat
- 9
等等..
我已经尝试编写正则表达式,但这是一场灾难(我正在努力解决)
这是我写的:
$page = file_get_contents(sprintf("http://steamcommunity.com/id/TripleThreat/namehistory"));
preg_match_all("/<span class=\"historyDash\">-<\/span>((.|\n)*)<\/div>/", $page, $matches);
foreach($matches[0] as $match) {
echo($match . "<br/>");
}
非常感谢任何帮助:)
您可以尝试以下正则表达式(匹配项在第一个捕获组中):
"/<span class=\"historyDash\">-<\/span>\s*((?:[^\<]|\n)*?)\s*<\/div>/"
在 Regex101 上查看。
我所做的更改:使用 \s*
修剪前后的空格,将 .
更改为 [^\<]
以仅选择非标记的那些(即,正确的文字)。
注意:正如@PedroLobito 指出的那样,don't parse HTML with regex unless necessary. Use a library to parse the DOM 而不是尽可能。我只是提供了一个简单的例子来扩展你的工作,但这可能不是最好的解决方案。