PHP mb_substr无法正常工作

时间:2014-03-11 14:19:02

标签: php html

我正在使用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在此后的表单中播种文本框,但是只要遇到空格,就会忽略其余的作为某种分隔值。

3 个答案:

答案 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);