将除URL之外的每个单词的首字母大写

时间:2011-05-30 16:57:06

标签: php regex 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!

包含以'。'分隔的单词如果可能,例如在美国

由于

2 个答案:

答案 0 :(得分:0)

试试这个:

<?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);

请记住,此功能不处理缩写(它不会将美国更改为美国)。国家代码可以通过几种不同的方式处理。一种是制作国家代码的哈希映射并替换它们或使用正则表达式。

答案 1 :(得分:-1)

保持网址更低:

$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);