我使用我的主题的字符串是:PHP preg_replace函数,而不是取代正确的价值
“节省68%的在4天/ 3夜假期。只有249美元!'
我使用'.\*(\b((enjoy|save)(up to| an extra)?|starting at|as low as|just|only)\b ([0-9]{1,3} ?\%|\$[0-9]+(\.[0-9]{2})?)).\*/i'
尝试匹配上述字符串的一部分提取它。
我使用'$1'
作为替代品,所以我完全preg_match
看起来像
preg_match('.*(\b((enjoy|save)(up to| an extra)?|starting at|as low as|just|only)\b ([0-9]{1,3} ?\%|\$[0-9]+(\.[0-9]{2})?)).*/i', '$1', 'Save 68% on a 4 Day/3 Night vacation at. Only $249!')
应该'Save 68%'
第一匹配,但它一直返回'Only $249'
。
我发现如果我在第一个通配符'.\*?(\b((enjoy|save)(up to| an extra)?|starting at|as low as|just|only)\b ([0-9]{1,3} ?\%|\$[0-9]+(\.[0-9]{2})?)).\*/i'
后面添加一个问号,它确实会返回'save 68%'
。有没有另一种解决方法。这似乎与我的分组有关。正如我发现
preg_match('/.*\b(enjoy|save)(up to| an extra)?|starting at|as low as|just|only\b.*/i', '$1', 'Save 68% on a 4 Day/3 Night vacation at. Only $249!')
回报'save'
像它应该,但我不能让同样的事情上发言全文工作。
工作正常,但我忘了提到它需要与MySQL的函数的preg_replace工作为好,这可悲的是没有在PHP版本中的所有功能。忘记提及这是我的错。但是,否则谢谢。 –
当然这仍然会工作... – trickyzter