2015-08-28 60 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文檔,並嘗試自己編寫代碼。