Two months after Islamist militants launched an assault on one of the biggest southern cities in the Philippines, the fighting is dragging on, and President Rodrigo Duterte says he is prepared to wait for a year for it to end.

The defense top brass admits it underestimated its enemy and is struggling to finish off the highly organized, pro-Islamic State fighters who swept through Marawi City on May 23 and have held parts of it despite sustained ground attacks by hundreds of soldiers and daily pummeling by planes and artillery.

On Saturday, lawmakers approved Duterte's request to extend martial law to the end of the year on the island of Mindanao, granting greater powers to security forces to go after extremists with a reach that goes far beyond Marawi.