2016-09-28 49 views
0

很長一段時間的第一個問題!我需要從facebook頁面請求(我使用graphi api請求一個頁面的網站)返回的字符串中找到任何和所有網址,並將該值放入一個數組中,隨後我將其顯示在可數據表的js表中。如何分配複雜的正則表達式到php變量

無論如何,我有問題,當我構建JSON數據的數據表,它打破了在某些情況下: -

http://socialinsightlab.com/datatable_fpages.json

的問題是與網站領域中,具有錯誤的字符/結構/空白空間等。

無論如何,我找到了一個完美的正則表達式來查找該字段中的所有網站(可以有多個網站列在返回中)。

的正則表達式是

(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»「」‘’])) 

當我嘗試並將其分配給一個PHP變量作爲preg_match_all我不能,因爲它不會接受正則表達式串入變量,因爲它有引號是我猜測。

所以我的問題是如何只提取在網站字段中找到的網址,然後將它們分配給一個變量,所以我可以將它們添加到數據表。

這是一個失敗的調用的例子: -

http://socialinsightlab.com/datatable_fpages.json

我需要能夠只返回網站,僅此而已。

任何想法?

感謝

喬納森

+1

所以你真正的問題是:「我怎麼一個字符串分配到包含引號字符變量?」?請顯示您嘗試這樣做的代碼行。謝謝。 – arkascha

+0

添加分隔符,轉義引號 - RegEx應該沒有問題。 – CD001

+0

並告訴數據源,如果他們想發佈JSON數據,它應該是有效的JSON數據 – RiggsFolly

回答

0

這正則表達式是爲解決這一問題作出明確:

(?:https?:\/\/|www)[^"\s]+ 

Live demo

-1

如果您不想處理所有此引號轉義,您可以執行以下操作:

  1. 將正則表達式保存到一個文件,比如說,regex.txt
  2. 閱讀這個文件放到變量和修剪:$regex = trim(file_get_contents("regex.txt"));
  3. 與使用它preg_match()