2015-08-28 62 views
3

我是php新手,但我需要修改一些字符串,以添加一个链接rel介绍一个视觉作曲家简码,一个动画图标。 问题是,我有这个变量,默认情况下,我应该添加两个变量只有当insered。

这里是原初代码:

$svg_icon = '<div class="svg-icon-holder" data-size="'. $icon_size . '" data-animation-speed="'.$animation_speed_time.'" data-animation="'.$enable_animation.'" data-animation-delay="'.$animation_delay.'" data-color="'.strtolower($color) .'"><span>'. get_template_directory_uri() . '/css/fonts/svg/' . $image .'</span></div>'; 

的问题是:我应该插入标签之前<a href="'. $icon_link . '" rel="'. $icon_link_rel .'"><div>到代码和结束的div后</a>但这只有当变量&icon_link设置,如果没有,<a>标签不应该出现,因为我不需要链接到所有图标。

希望我已经很好地解释了我自己,如果不让我知道!

问候,阿林。

+2

为什么不制作'if'语句并检查该条件,然后重新排列html标签? – rst

回答

3

做一个if-statement,如果$icon_link定义和设置,然后用一个点(.)您<a>标记添加到您的$svg_icon变量:

$svg_icon = '<div class="svg-icon-holder" data-size="'. $icon_size . '" data-animation-speed="'.$animation_speed_time.'" data-animation="'.$enable_animation.'" data-animation-delay="'.$animation_delay.'" data-color="'.strtolower($color) .'"><span>'. get_template_directory_uri() . '/css/fonts/svg/' . $image .'</span></div>'; 
if($icon_link) 
    { 
     $svg_icon = '<a href="'. $icon_link . '" rel="'. $icon_link_rel .'">'. 
        $svg_icon.'</a>'; 
    } 
+0

你能解释一下为什么downvote?这可以帮助我改进我的答案 –

+0

你好!谢谢你的回答,这对我有用,看起来像最简单的方式!有人可以告诉我,如果这个代码很好吗? –

+0

@AlinIonescu我很高兴我能帮上忙。如果此答案已解决您的问题,请点击复选标记将其标记为已接受。这表明你已经找到了一个解决方案,并为回答者和你自己提供了一些声誉 –

1

只需用一个如果statment。您在操作字符串,因此您可以轻松单词添加到其他字符串一样,

if ($icon_link){ 
    $beginning = "<a href='$icon_link' rel='$icon_link_rel'>"; 
    $ending = "</a>" 
} 
else { 
    $beginning = ""; 
    $ending = "" 
} 
$svg_icon = "$beginning<div class='svg-icon-holder' data-size='$icon_size' data-animation-speed='$animation_speed_time' data-animation='$enable_animation' data-animation-delay='$animation_delay' data-color='".strtolower($color)."'> 
<span>".get_template_directory_uri()."/css/fonts/svg/$image</span></div>$ending"; 
+0

结束'' –

+0

我刚刚看到了,我编辑了 – Hearner

+0

现在它开始看起来像一团糟。我认为LuthandoLoot提出了一个更好的答案。 –

-1

首先,不要在一行写的一切,所以它在你的代码适合在屏幕上这里SO(也许太)。

其次,我会使用instring变量。在PHP中,您可以使用单引号,您的字符串按原样使用,或者您可以使用双引号,您可以在其中使用变量。像echo "Hey, my name is $name"; $这里的名字将被变量的值交换。如果你需要双引号字符串中,您就可以使用\"

三反斜杠转义,你可以使用内联的if-else,如下因素语法:$str = boolean ? "str if true" : "str if false"

$svg_icon = isset($icon_link) ? "<a href=\"$icon_link\" 
    rel=\"$icon_link_rel\">" : '' . //add your opening <a> if needed 
    "<div class=\"svg-icon-holder\" 
    data-size=\"$icon_size\" data-animation-speed=\"$animation_speed_time\" 
    data-animation=\"$enable_animation\" 
    data-animation-delay=\"$animation_delay\" 
    data-color=\"strtolower($color) \"><span>" 
    . get_template_directory_uri() 
    . "/css/fonts/svg/ $image </span></div>" 
    . isset($icon_link) ? '<\a>' : ''; //add your closing <\a> if needed 
+1

你告诉他不要在一行上写字,但是你给他一个答案,你可以用inline if语句在一行中插入字母。 –

+0

@MeneerVenus为你编​​辑。现在好多了? – inetphantom

0

个人而言,我更喜欢使用sprintf格式化字符串而不是使用点将字符串粘贴在一起。您可以将$svg_icon字符串与sprintf一起使用,只有<div>标记。之后,仅仅环绕$svg_icon<a>标签如果$icon_link定义:

$svg_icon_format = '<div class="svg-icon-holder" data-size="%d" data-animation-speed="%d" data-animation="%d" data-animation-delay="%d" data-color="%d"><span>%s</span></div>'; 

$values = array(..enter values here..); 

$svg_icon = sprintf($svg_icon_format,$values); 

if(isset($icon_link) && isset($icon_link_rel)) { 
    $svg_icon = sprintf('<a href="%s" rel="%s">%s</a>',$icon_link,$svg_icon,$icon_link_rel); 
} 

免责声明:此代码没有进行测试。请看我链接的sprintf文档,并尝试自己编写代码。