2015-06-27 226 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的阴天世界。