2010-07-25 74 views
1

我试图在全名后面显示撇号's,例如Samuel L. Jackson’s,但如果省略姓或中间名's不能正确显示,例如Samuel ’s有人可以帮我解决这个问题?PHP编码问题

谢谢

这里是PHP代码。

if(!empty($first_name) || !empty($middle_name) || !empty($last_name)) { 
    echo = $first_name . ' ' . $middle_name . ' ' . $last_name . ' \'s'; 
} 

回答

5
$text = array(); 
if(!empty($first_name)) { 
    $text[] = $first_name; 
} 
if(!empty($middle_name)) { 
    $text[] = $middle_name; 
} 
if(!empty($last_name)) { 
    $text[] = $last_name; 
} 

if(count($text) > 0) { 
    echo implode(' ', $text).'\'s'; 
} 
1
echo trim($first_name . ' ' . $middle_name . ' ' . $last_name). ' \'s'; 

应该做的伎俩?

还有一个问题:如果你有名字和姓氏,中间会有两个空格......在某个点上会有问题吗?

+0

如果没有中间名,那么就会有名字和姓氏 – marvin 2010-07-25 12:23:58

+0

@marvin HTML之间的两个空格将更正这个问题止跌”除非有更好的方法吗? – meta 2010-07-25 12:24:33

0
echo trim($first_name . ' ' . $middle_name . ' ' . $last_name) . '\s'; 

装饰将摆脱任何尾随空格。

0

为什么使用单引号? 你可以简单地使用“'s”不需要转义。

echo $first_name.(empty($middle_name) ? '' : $middle_name.' ').$last_name."'s"

替代

$names = array($first_name); 
if(!empty($middle_name)) 
    $names[] = $middle_name; 
$names[] = $last_name; 
echo implode(' ', $names)."'s"; 
0
$full_name = trim($first_name.' '.$middle_name); 

if(!empty($full_name) && !empty($last_name)){ 
    $full_name .=' '.$last_name."'s"; 
    echo $full_name; 
} 
+0

$ full_name不能为空,因为$ first_name和$ last_name不能为空。 – 2010-07-25 12:39:24

+0

现在编辑:) – Sadat 2010-07-25 14:47:31

0
$a = "" 
if (!empty($first_name) 
    $a .= $first_name . " " 
if (!empty($middle_name) 
    $a .= $middle_name . " " 
if (!empty($last_name) 
    $a .= $last_name . " 's" 

这应该做的伎俩。

0
echo 
    (empty($first_name) ? '' : $first_name) . 
    (empty($middle_name) ? '' : ' ' . $middle_name) . 
    (empty($last_name) ? '' : ' ' . $last_name) . "'s"; 

如果这些变量将始终被设置:

echo str_replace(
    ' ', 
    ' ', 
    $first_name . ' ' . 
    $middle_name . ' ' . 
    $last_name . "'s"); 

要显示在HTML适当的单引号,所述'’,其中显示作为’替换。

0

可能

echo htmlspecialchars($full_name, ENT_QUOTES); 

就能解决问题