Php Regex根据用户名从href属性提取URL
我试图提取特定用户之后的所有链接,但我的正则表达式仅获取一个链接: HTML:Php Regex根据用户名从href属性提取URL,php,regex,Php,Regex,我试图提取特定用户之后的所有链接,但我的正则表达式仅获取一个链接: HTML: 不幸的是,我不熟悉电报信使。我几乎可以肯定你的问题不能用正则表达式(轻松)解决。这条规则有太多的例外。因此,我将提供两个备选方案: 使用合适的HTML解析器,扔掉不需要的东西,捕获相关信息 使用黑客 解析HTML 扔掉所有没有带来相关信息的东西 您将得到一个名称和链接列表 如果一个名字后面跟着另一个名字,删除它,因为它没有链接 加载数组中剩余的内容,以及与其代表用户关联的链接 解析后,您将拥有与以下类似的结构
不幸的是,我不熟悉电报信使。我几乎可以肯定你的问题不能用正则表达式(轻松)解决。这条规则有太多的例外。因此,我将提供两个备选方案:
- 解析HTML
- 扔掉所有没有带来相关信息的东西
- 您将得到一个名称和链接列表
- 如果一个名字后面跟着另一个名字,删除它,因为它没有链接李>
- 加载数组中剩余的内容,以及与其代表用户关联的链接
- 名字
- 链接
- 链接
- name你能用两个正则表达式吗?首先用用户名匹配整个区域,然后匹配URL
preg_match('/(?<=USERNAME).*(?<=href=").*?</s', $string, $matches); preg_match_all('/(?<=href=").*?(?=<)/', $matches[0], $newMatches); var_dump($newMatches);
你希望有多少链接?总是正好两个?超过2个?html结构是否从一个实例(用户)变为另一个实例(用户)?虽然有时可以使用正则表达式来处理涉及html的“次要”任务,但您的示例似乎需要一个能够理解html结构的工具,以便正确提取信息。不总是2个,在这种情况下可能是一个或多个,HTML解析器可能更有用,结果更准确each@Diok没问题!请接受此答案作为解决方案。;)preg_match_all('/USERNAME[\s\S]*?href="(.*?)</', $data, $matches); print_r($matches);
Array ( [0] => Array ( [0] => FullCapture [1] => Array ( [0] => https://google.com ) )
preg_match('/(?<=USERNAME).*(?<=href=").*?</s', $string, $matches); preg_match_all('/(?<=href=").*?(?=<)/', $matches[0], $newMatches); var_dump($newMatches);
array(1) { [0]=> array(2) { [0]=> string(18) "https://google.com" [1]=> string(17) "https://yahoo.com" } }