2015-06-27 228 views
-1

我與preg_match試驗和我想出了這條線,以幫助我在網頁上找到的第一個金額文字和HTML美元符號:然而,其中一期工程真棒PHP的:更換使用的preg_match

preg_match('/\$(.*)/', $content, $USDmatch); 

我要定位的網站在源代碼中有這個,而不是$它們使用的符號$。我該如何搜索?

+1

你不能只加引號? – Anonymous

+0

然後搜索文字'$',或事先轉換實體。 preg_match('/&#36 /',$ content,$ USDmatch); – mario

+0

preg_match像那樣?因爲這沒有用 – Chrono

回答

0

個人 - 因爲我不是在正則表達式和它的外觀方面的專家,也不是你,像這樣運行:

$result = preg_match("/((\$|$)(\S*))/g", $content, $USDmatch); 

這是什麼呢? 好:

  • /((\ $ | $)(\ S *))/ G
  • 1捕獲組((\ $ | $)(\ S *))
  • 第二捕獲組(\ $ | $
  • 第一備選物:\ $
  • \ $字符匹配$字面上
  • 第二備選:$
  • $字符$字面上
  • 第三捕獲組(\ S *)
  • 匹配\ S *匹配任何非空白字符[^ \ r \ n \噸\ F]
  • 量詞:*之間的零和無限次,儘可能多次,根據需要回饋[貪婪]

    • g修飾符:全局。所有的比賽(不上的第一場比賽返回)

並不是必需的/g修改,但我加了它在這裏搜索所有事件,而不是返回第一個。根據需要調整。

所以與上面的代碼,並且下面我們的例子有:

$content = "e gnerij $100 gnerjingeijrn gijern jiner e r $100 begrbrtbtr erh jerng knrj gnrjk " 

$result = preg_match("/((\$|$)(\S*))/g", $content, $USDmatch); 

從該: $result返回TRUE,(2個認定,儘管這超出了使用Preg_match的範圍)

我強烈建議使用http://www.regex101.com來探索Regex的陰天世界。