2016-11-17 128 views
-3

我想提取某个链接,即https://www.amazon.com/order?id= *其中*是一个可变长度的字母数字字符串,例如。 https://www.amazon.com/order?id=pbW14792Zs86165从HTML文本的身体,其中一个例子是PHP正则表达式从正文中提取特定链接

To view your order details, click this link:<br /><a href=https://www.amazon.com/order?id=pbW14792Zs86165>https://www.amazon.com/order?id=pbW14792Zs86165</a><br><br><strong>Amazon</strong><br />Browse millions of products. <a href='https://www.amazon.com'>https://www.amazon.com</a><br /><br /> 

我曾尝试下面的代码,但其获得非常久远其他HTML标签的链接,更多的文字

preg_match("/(?:^|(?<=[,.\s\"\>]))https:\/\/www\.amazon\.com\/order\?id=\S+(?=[\<\"\s,.]|$)/",$message,$matches); echo "$matches[0]<br>"; 

输出我得到这是不受欢迎的

https://www.amazon.com/order?id=pbW14792Zs86165</a><br><br><strong>Amazon</strong><br 

我该如何修改代码来简单地得到这个特定的链接,而不是其他的?

+0

'\ S'匹配任何不是空格的东西。因此,您应该将其替换为您想要匹配的内容。也许'\ w'更好 - 它匹配字母,数字和下划线。 –

+0

为什么不只是简单地提取id作为id = \ w + – MYGz

+0

只需将该id作为\?id =(\ w +) – MYGz

回答

1

只需将该ID作为\?id =(\ w +)