我使用我的主題的字符串是: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