Может кто-нибудь сказать мне, пожалуйста, как это сделать:
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!
Включая слова, разделенные '.'если возможно, например, в США
Спасибо
попробуйте это:
<?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);
Имейте в виду, что эта функция не обрабатывает аббревиатуры (она не изменит США на США). Коды стран могут обрабатываться несколькими различными способами. Один из них - создать хэш-карту кодов стран и заменить их или использовать для этого также регулярное выражение.
Чтобы сохранить URL-адреса ниже:
$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);