如何在字符串的前两个字符中使用PHP strtoupper函数?或者还有其他功能吗?
因此字符串'hello'或'Hello'必须转换为'HEllo'。
答案 0 :(得分:18)
$txt = strtoupper( substr( $txt, 0, 2 ) ).substr( $txt, 2 );
这适用于长度小于2个字符的字符串。
答案 1 :(得分:4)
假设你只需要一个单词:
$ucfirsttwo = strtoupper(substr($word, 0, 2)) . substr($word, 2);
基本上,提取前两个字符并大写,然后附加剩余的字符。
如果您需要处理字符串中的多个单词,那么它会变得有点丑陋。
哦,如果您使用的是多字节字符,请在两个函数前加上mb_,以获得支持多字节的版本。
答案 2 :(得分:4)
$str = substr_replace($str, strtoupper($str[0].$str[1]), 1, 2);
答案 3 :(得分:4)
$string = "hello";
$string{0} = strtoupper($string{0});
$string{1} = strtoupper($string{1});
var_dump($string);
//output: string(5) "HEllo"
答案 4 :(得分:3)
将preg_replace()
与e
pattern modifier一起使用可能很有趣:
$str = 'HELLO';
echo preg_replace('/^(\w{1,2})/e', 'strtoupper(\\1)', strtolower($str));
编辑:建议您不使用此方法。来自PHP manual:
不鼓励使用此修饰符,因为它很容易引入安全漏洞:
<?php $html = $_POST['html']; // uppercase headings $html = preg_replace( '(<h([1-6])>(.*?)</h\1>)e', '"<h$1>" . strtoupper("$2") . "</h$1>"', $html );
通过传入字符串可以很容易地利用上面的示例代码 例如
<h1>{${eval($_GET[php_code])}}</h1>
。这给了攻击者 能够执行任意PHP代码,因此几乎可以实现 完全访问您的服务器。防止这种远程代码执行漏洞 应改为使用preg_replace_callback()函数:
<?php $html = $_POST['html']; // uppercase headings $html = preg_replace_callback( '(<h([1-6])>(.*?)</h\1>)', function ($m) { return "<h$m[1]>" . strtoupper($m[2]) . "</h$m[1]>"; }, $html );
根据建议,请考虑使用e
:
preg_replace_callback()
模式
$str = 'HELLO';
echo preg_replace_callback(
'/^(\w{1,2})/'
, function( $m )
{
return strtoupper($m[1]);
}
, strtolower($str)
);
答案 5 :(得分:2)
ucfirst
Docs只做第一个,但substr access on strings也有效:
$str = ucfirst($str);
$str[1] = strtoupper($str[1]);
备注:这样可行,但如果未定义偏移量1,您将收到较小字符串的注意事项,因此不安全,空字符串甚至会转换为数组。所以它只是展示了一些选择。
答案 6 :(得分:2)
这应该有效strtoupper(substr($target, 0, 2)) . substr($target, 2)
,其中$ target是你的'你好'或其他什么。