markjohnson Posted September 5, 2011 Share Posted September 5, 2011 If I have a string as such: $title = "Product Title £143.99" How can I search the string for £ and then all the subsequent numbers, and then enclose them with a tag? I was thinking of using preg match, and enclosing the result within whatever tag. Any ideas? Thanks Link to comment https://forums.phpfreaks.com/topic/246472-how-to-preg-replace-%C2%A3200/ Share on other sites More sharing options...
joe92 Posted September 5, 2011 Share Posted September 5, 2011 I would use a preg_replace. Not sure if you will have to use html code for the £ symbol though? preg_replace("/(£[0-9]+?\.[0-9]{2,2})/is", "<tag>\1</tag>", $title) I've assumed that you will always have at least 1 preceeding number before the decimal place and that you will always have 2 numbers after it to fall with standard currency format (i.e. 0 pounds and 0 pence will be represented as £0.00). The \1 is a backreference to the first set of paranthesis (first round brackets basically), I think $1 is also another way of calling a backreference. Let me know if it works. Link to comment https://forums.phpfreaks.com/topic/246472-how-to-preg-replace-%C2%A3200/#findComment-1265760 Share on other sites More sharing options...
cags Posted September 6, 2011 Share Posted September 6, 2011 No real difference to joe92's pattern, just a slightly different take of... preg_replace('/£\d+(?:\.\d{2})/', "<tag>\0</tag>", $title); I think it should work, though I did just get up, so it's not tested Link to comment https://forums.phpfreaks.com/topic/246472-how-to-preg-replace-%C2%A3200/#findComment-1265847 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.