A Swiss man kidnapped by Islamic militants in the southern Philippines nearly three years ago was rescued on Saturday during a gunbattle between soldiers and his abductors, the military said.

Lorenzo Vinciguerra ran away from the Abu Sayyaf militants during the clash on the remote island of Jolo, and was picked up by the soldiers, national military spokesman Colonel Restituto Padilla told AFP.

"He found an opportunity to escape because of the running gunbattle with our troops," Padilla said.

Switzerland's ambassador to the Philippines, Ivo Sieber, confirmed to AFP that Vinciguerra was safe at a military hospital after receiving non-life threatening injuries during his escape.

However, the military said a Dutchman abducted with Vinciguerra, Ewold Horn, had not been rescued, and there was no information about him yet.

Vinciguerra and Horn were on an expedition to photograph rare birds on the remote Tawi-Tawi island group in the southern Philippines when they were abducted by unknown gunmen and turned over to the Abu Sayyaf.

At the time of their abductions, Vinciguerra was reported to be aged 47, and Horn was 52.

The Abu Sayyaf has been blamed for the worst terror attacks in Philippine history, including repeated kidnappings of foreigners who are usually ransomed off for huge amounts.

It is considered a terrorist organisation by the United States, which has provided military assistance and training to Filipino troops to hunt down the group.

Many foreign governments warn their citizens against travelling to the Tawi-Tawis and other islands in the southern Philippines that are regarded as strongholds for the Abu Sayyaf and other Islamic militants.

The Abu Sayyaf in October released two Germans they had held captive for six months.

German and Philippine authorities refused to say if a ransom had been paid to secure their release.

But the Abu Sayyaf later posted a video on Facebook showing money which they said was the full 250 million pesos ($5.7 million) they had demanded for the Germans.