我正在使用Notepad ++来做一些HTML和PHP。有一次,我有以下代码:
$strUserEmail = $_SESSION["userLoggedIn"];
$strSQL = "SELECT * FROM customer WHERE Email = '$strUserEmail'";
$rsUser = mysql_query($strSQL)
or die($db_name . " : " . $strSQL . " : " . mysql_error());
$rowUser = mysql_fetch_array($rsUser);
$strUserName = $rowUser["FirstName"] . '.' . mb_substr($rowUser["LastName"], 0);
应该是什么,例如,汤姆S(汤姆是第一个名字,S是姓氏的第一个字母)。但是,它只是给了我完整的姓氏。
作为第二个问题,我使用$ strUserName在此后的表单中播种文本框,但是只要遇到空格,就会忽略其余的作为某种分隔值。
答案 0 :(得分:2)
您在length
函数中忽略了mb_substr()
param。 Read the doc
答案 1 :(得分:2)
你不应该再使用mysql_ *函数,因为它们已被弃用且非常不安全,请学习&使用mysqli_ *:http://www.php.net/manual/en/book.mysqli.php
其次,你必须为mb_substr提供一个长度,传递默认的Null
将被解释为0。
尝试:
$strUserName = $rowUser["FirstName"] . '.' . mb_substr($rowUser["LastName"], 0, 1);
答案 2 :(得分:0)
您也可以使用substring方法实现这一目标。
$strUserName = $rowUser["FirstName"] . ' ' . substr($rowUser["LastName"], 0, 1);
echo $strUserName;
编辑。感谢@ czachor让我注意到这一点。
如果你使用unicode charachters,上面的函数可能无法完美地为你工作,因为substr()函数不是可识别多字节的。例如,如果你是德语,有变音符号,如Ä,öß等儿子。因此,您可以更好地使用mb_substr()
,如下所示。
$strUserName1 = $rowUser["FirstName"]. ' ' . mb_substr($rowUser["ÖLastName"], 0, 1,'UTF-8');
echo utf8_decode($strUserName1);