2017-05-27 56 views
0

我需要使用正則表達式爲PHP腳本提取Twitter ID。只要在網址中使用雙引號編碼它的偉大工程......使用正則表達式從鏈接中提取單引號和雙引號網址

<a href='http://www.twitter.com/singlequotes'>Twitter Single Quotes</a> 
<a href="http://www.twitter.com/doublequotes">Twitter Double Quotes</a> 

// regular expression 
/<a [^>]*\bhref\s*=\s*"\K[^"]*twitter.com[^"]*/ 

我一直在使用"|'["']和許多其他的事情,不能工作嘗試。非常感謝,如果你能幫助我。謝謝!

https://regex101.com/r/7Zu3uF/1

回答

1

這是一樣快,你可以走了。不需要捕獲組。

href=['"]\K[^'"]+

Pattern Demo

尋找單個或雙引號後href=然後匹配的一切,是不是一個單一或雙引號。這是可以做到的那麼簡單。

p.s.如果你正在關注近=空間,然後使用:

href *= *['"]\K[^'"]+

PHP實現(PHP Demo):

$in='<a href=\'http://www.twitter.com/singlequotes\'>Twitter Single Quotes</a> 
<a href="http://www.facebook.com/doublequotes">Twitter Double Quotes</a> 
<a href=\'http://twitter.com/singlequotes\'>Twitter Single Quotes</a> 
<a href="https://www.facebook.com/doublequotes">Twitter Double Quotes</a>'; 

$companies=['twitter','facebook']; 

$out=preg_match_all('/href *= *[\'"]\Khttps?:\/\/(?:www\.)?(?:'.implode('|',$companies).')\.com[^\'"]+/',$in,$out)?$out[0]:[]; 

var_export($out); 
+0

非常感謝您的支持。但我的問題是,我需要在我的模式中定義特定的URL。在這種情況下,twitter.com可能是facebok.com ...這些情況下的模式如何? – vloryan

+0

謝謝。但'preg_match_all(「/ href = ['」] \ Khttps?:\/\/www \。(?: twitter | facebook)\。com [^'「] +/g」,$ result,$ results); '在我的PHP代碼中也會導致**解析錯誤**。 (不知道如何解決這個問題。)正則表達式工作得很好。 – vloryan

+0

真棒,謝謝!我試過了,但沒有得到解決這個問題的方法:我怎麼能在'href =「'和'anything.com之間通配符'因爲我沒有得到任何結果'href =「https://twitter.com...'例如...謝謝! – vloryan

相關問題