I'm not going to write this one, but this should give someone enough to be getting on with...
PHP Code:
// $searchstring is acquired from a form
// $fieldnumber is the number of the custom field you are searching with.
// it would probably come from a form too...
$users = $DB_site->query("
SELECT user.*, userfield.* FROM user
LEFT JOIN userfield ON (userfield.userid = user.userid)
WHERE userfield.field".addslashes($fieldnumber)." LIKE(\"%$searchstring%\")
ORDER BY user.username");
while ($user = $DB_site->fetch_array($users)) {
// do what needs to be done to build the page bits
}
This code snippet will perform a simple text match against a custom user field - so if you were searching with $fieldnumber = 2 (Location) and $searchstring was "New", then it would pick up all users from New York, Newcastle etc...