I'm not 100% certain (have to check the code to verify it) but I think the filtering searches not only within the display name of the object (the value you see in the dropdown) but also within all other properties of the objects.
You can see what properties the given object type has by opening the inventory tab of vRO client, navigating the tree and selecting some object of your type. Then in the right panel you will see the properties of this object and their values.
So, in your case, it is likely that machines that do not have ph in their display name, have ph as a substring of some of their other properties, for example in their DNS names, and that's why you see them in the filtered list.
Another possible (although not very likely) explanation could be that filtering didn't work on key press event. Do you see the list changes as you type in the filter box? Also, could you try to enter ph in the filter box and then press the Return/Enter key (which should trigger the filtering for sure)?