2011-05-30 2 views
0

que quelqu'un peut me dire s'il vous plaît comment faire:première lettre en majuscule de chaque mot, sauf pour les URL

Input: 

hello http://DOMAIN.com/asdakdjk.php?asd=231&adsj=23 u.s. nicely done! 

Result: 

Hello http://DOMAIN.com/asdakdjk.php?asd=231&adsj=23 U.S. Nicely Done! 

Y compris mots séparés par « » si possible comme dans les Etats-Unis

Merci

+1

pour les mots séparés par un espace, vous pouvez utiliser la fonction ucwords de php –

Répondre

-1

Pour garder urls inférieure:

$strarray = explode(' ',$str); 
for($i=0;$i<count($strarray)) 
{ 
if(substr($strarray[$i],0,4)!='http') 
{ 
    $strarray[$i] = ucfirst($strarray[$i]) 
} 
} 

$new_str = implode('',$strarray); 
0

essayez ceci:

<?php 

function capitalizeNonURLs($input) 
{ 
    preg_match('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', $input, $matches); 
    $url = $matches[1]; 

    $temp = ucwords($input); 
    $output = str_ireplace($url, $url, $temp); 

    return $output; 
} 

$str = "hello http://domain.com/asdakdjk.php?asd=231&adsj=23 u.s. nicely done!"; 
echo capitalizeNonURLs($str); 

Gardez à l'esprit que cette fonction ne gère pas les abréviations (il a gagné ne changez pas les Etats-Unis aux Etats-Unis). Les codes pays peuvent être gérés de plusieurs manières différentes. L'une consiste à créer une hashmap des codes de pays et à les remplacer ou à utiliser une expression régulière pour cela également.

Questions connexes