The need for this routine comes up every now and then and it confuses people because they thing date(“W”) will do the trick.
Once they realize that’s the week of the year, they start to get all elaborate in finding ways to get which week in the month it is.
Applying a little logic, you can come up with the simple solution of subtracting away all of the weeks before the start of the month an the remainder is your answer
$weekNum = date(“W”) – date(“W”, strtotime(date(“Y-m-01”, now()))) + 1;
(Drop the + 1 if you want it to be zero based.