[PHP] Bizarreness with htmlentities() and other things

2002-11-28 Thread James Coates
Hello!

I'm currently doing some work that requires a mySQL database of actor 
names. For all my actors, I have three columns; first_name, last_name and 
between_name. Because between_name can be written in many ways (Peter van 
Wibble or Fred d'Angelo), and the French have a habit of writing their 
surnames in capitals, I wrote a little function to prepare the actor names 
for output:

?
 function actor_name($last,$middle,$first) {
 // because we have so many different name combinations, write out a string
 // that does capitalisation and the like properly (hopefully)
 // ex: actor_name(ANGELO,d',Jean-Pierre) = Jean-Pierre d'Angelo

  // strtolower() everything because ucwords() doesn't work on mixed case
  $last=strtolower($last);
  $middle=strtolower($middle);
  $first=strtolower($first);

  // split hyphenated names so we can ucwords() them
  if (strpos($last,-)) {
   $lasthyphen=true;
   $last=ereg_replace(-, ,$last);
  } else { $lasthyphen=false; }

  if (strpos($first,-)) {
   $firsthyphen=true;
   $first=ereg_replace(-, ,$first);
  } else { $firsthyphen=false; }

  // if the middle name doesn't end with an apostrophe, add a space and
  // lowercase it just in case someone's mis-typed it
  if (!strrpos($middle,')) {
   $middle.= ;
  }

  $last=ucwords($last);
  $first=ucwords($first);

  if ($lasthyphen==true) { $last=ereg_replace( ,-,$last); }
  if ($firsthyphen==true) { $first=ereg_replace( ,-,$first); }

 return htmlentities($first $middle$last);

 }

?

Thing is, I'm getting bizarre behaviour where some characters become 
modified in a way I don't like - in particular, when the letter L follows 
an E with a diaresis (Raphaël, for example) it becomes upper case. 
Suggestions, anyone?

And if anyone wants to make that code shorter and more readable, I'd 
appreciate it greatly. :-)

James.
xx


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] Bizarreness with htmlentities() and other things

2002-11-28 Thread Rich Gray
Hi James
There is a bug in PHP for the capitalisation problem
http://bugs.php.net/bug.php?id=14655
If you check the link then a workaround was posted by someone.
HTH
Rich
-Original Message-
From: James Coates [mailto:[EMAIL PROTECTED]]
Sent: 28 November 2002 13:11
To: [EMAIL PROTECTED]
Subject: [PHP] Bizarreness with htmlentities() and other things


Hello!

I'm currently doing some work that requires a mySQL database of actor
names. For all my actors, I have three columns; first_name, last_name and
between_name. Because between_name can be written in many ways (Peter van
Wibble or Fred d'Angelo), and the French have a habit of writing their
surnames in capitals, I wrote a little function to prepare the actor names
for output:

?
  function actor_name($last,$middle,$first) {
  // because we have so many different name combinations, write out a string
  // that does capitalisation and the like properly (hopefully)
  // ex: actor_name(ANGELO,d',Jean-Pierre) = Jean-Pierre d'Angelo

   // strtolower() everything because ucwords() doesn't work on mixed case
   $last=strtolower($last);
   $middle=strtolower($middle);
   $first=strtolower($first);

   // split hyphenated names so we can ucwords() them
   if (strpos($last,-)) {
$lasthyphen=true;
$last=ereg_replace(-, ,$last);
   } else { $lasthyphen=false; }

   if (strpos($first,-)) {
$firsthyphen=true;
$first=ereg_replace(-, ,$first);
   } else { $firsthyphen=false; }

   // if the middle name doesn't end with an apostrophe, add a space and
   // lowercase it just in case someone's mis-typed it
   if (!strrpos($middle,')) {
$middle.= ;
   }

   $last=ucwords($last);
   $first=ucwords($first);

   if ($lasthyphen==true) { $last=ereg_replace( ,-,$last); }
   if ($firsthyphen==true) { $first=ereg_replace( ,-,$first); }

  return htmlentities($first $middle$last);

  }

?

Thing is, I'm getting bizarre behaviour where some characters become
modified in a way I don't like - in particular, when the letter L follows
an E with a diaresis (Raphaël, for example) it becomes upper case.
Suggestions, anyone?

And if anyone wants to make that code shorter and more readable, I'd
appreciate it greatly. :-)

James.
xx


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




RE: [PHP] Bizarreness with htmlentities() and other things

2002-11-28 Thread James Coates
At 14:07 28/11/2002 +, Rich Gray wrote:


There is a bug in PHP for the capitalisation problem


Sounds like an internal Microsoft memo.  :-)


http://bugs.php.net/bug.php?id=14655
If you check the link then a workaround was posted by someone.


Cool. If I've got that right, it'll be fine on the production (Linux) 
server, so I have no need to worry. :-)

Many thanks,
James.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php