php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #14117 Problems with ucwords(strtolower()) function
Submitted: 2001-11-19 10:45 UTC Modified: 2001-11-19 11:12 UTC
From: andregp at yahoo dot com Assigned:
Status: Not a bug Package: Strings related
PHP Version: 4.0.6 OS: Win98/Linux-Conectiva
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: andregp at yahoo dot com
New email:
PHP Version: OS:

 

 [2001-11-19 10:45 UTC] andregp at yahoo dot com
<html>
<body>
<?php 
   class texto {
      var $str1='',
          $str2='',
          $str3='';
   
   }
   
   $str= new texto();
   
   $str->str1='A??O';
   $str->str2=strtolower($str->str1);
   $str->str3=ucwords($str->str1);
   print("1:  $str->str1 <br>".
         "2:  $str->str2 <br>".
         "3:  $str->str3 <br>");
?>
</body>
</html>


Expected $str->str3 = 'A??o', but isn't what I get.
When I use this functions in strigs that are outside a object, this error don't happens.
In instance:
<?php
 $str1='A??O';
 $str2=strtolower($str1);
 $str3=ucwords($str2);
?>
// ---> THIS OK


* Sorry 'bout my poor english.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-11-19 10:48 UTC] sander@php.net
You should set the correct locale (see http://www.php.net/manual/en/function.setlocale.php)

If that's not the case, show us your output and tell us what you exactly expect.
 [2001-11-19 10:49 UTC] derick@php.net
Your script is buggy. You're using the original string (str1) to ucwords.
ucwords() will not lowercase any other letters.

Not a bug -> bogus
 [2001-11-19 10:50 UTC] jpm@php.net
Not a bug -> bogus.

But yeah, if you think thats not the case, please tell us what you would expect.
 [2001-11-19 10:59 UTC] andregp at yahoo dot com
<?php 
   class texto {
      var $str='';
   
   }
   
   $str= new texto();
   
   $str->str='A??O';
   $str->str=ucwords(strtolower($str->str));
   print("1:  $str->str ");
?>

This is what I get in Win98(with PWS) using the script above:
1: A??o 

And with the same script, this is what I get in Linux(with Apache):
1: A??o 

I expect:
1: A??o

What I do wrong?
 [2001-11-19 11:03 UTC] derick@php.net
Then it's a locale problem, check the url posted by sander.

Derick
 [2001-11-19 11:12 UTC] andregp at yahoo dot com
Thanks.

The setlocale('LC_ALL','pt_BR'); works in perfect way.

And sorry annoy you.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Wed Jan 08 03:01:29 2025 UTC