字符串考虑以下数组持有的所有美国股票行情,由长下令:检查股票行情在反序列
$tickers = array('AAPL', 'AA', 'BRK.A', 'BRK.B', 'BAE', 'BA'); // etc...
我想检查一个字符串所有可能的匹配。代号都写有或没有“$”串联到前面:
$string = "Check out $AAPL and BRK.A, BA and BAE.B - all going up!";
所有行情都被贴上这样的:{TICKER:XX}。预期结果将是:
Check out {TICKER:AAPL} and {TICKER:BRK.A} and BAE.B - all going up!
那么行情应该在$行情阵列进行检查,并同时符合,如果他们后面有一个空格或逗号。到现在为止,我一直在使用以下内容:
preg_replace('/\$([a-zA-Z.]+)/', ' {TICKER:$1} ', $string);
所以我不必检查$ tickers数组。假定所有的收款人都以“$”开头,但这只是约80%的案例中的惯例。因此,需要更新过滤器。
我的问题存在:有一个简单的方法来调整正则表达式来符合新的要求,或者我需要写一个新的功能,因为我是规划先行:
function match_tickers($string) {
foreach ($tickers as $ticker) {
// preg_replace with $
// preg_replace without $
}
}
或者,这可以一气呵成
可能有更有效的方法来使用函数(我的本机“语言”是C#/。NET),但这应该给你一个大致的想法。您进行两次替换的原因是,您首先提取股票代码,然后将其替换为潜在的尾随字符。我不认为你可以一步做到这一点,因为股票代码不会包含你需要的标点符号。 – tvanfosson 2012-02-15 13:57:00