我想改變鏈接地址取決於值是否符合某個值。但我返回一個語法錯誤。我需要改變什麼?我正在錯誤是語法錯誤,意想不到的T_IF什麼是正確的語法爲PHP如果語句轉義內部鏈接
echo "<a href='".if($type=='group'){echo'link_a';}else{echo 'link_b';}."'>".$usaname."</a>
我想改變鏈接地址取決於值是否符合某個值。但我返回一個語法錯誤。我需要改變什麼?我正在錯誤是語法錯誤,意想不到的T_IF什麼是正確的語法爲PHP如果語句轉義內部鏈接
echo "<a href='".if($type=='group'){echo'link_a';}else{echo 'link_b';}."'>".$usaname."</a>
試試這個
$link = ($type=='group') ? 'link_a' : 'link_b';
echo "<a href='".$link."'>".$usaname."</a>
嘗試三元...
echo '<a href="', htmlspecialchars(($type==='group') ? 'link_a' : 'link_b'), '">', htmlspecialchars($usaname), '</a>';
這應該簡化事情有點。另外,最好使用htmlspecialchars()
,以便使用有效的HTML。
爲什麼這是低調?這是怎麼回事? – Brad
爲什麼選擇htmlspecialchars? – tuergeist
任何時候你輸出可變數據到HTML,你都應該使用'htmlspecialchars()',這樣HTML的內容才能正確地轉義。例如,如果你不是'link_a'或'link_b'你有類似'http:// somesite/somepath?param1 = value&param2 = value'的東西,並且你直接回顯到HTML,那麼你生成的HTML無效!您需要用'&'替換保留字符'&'。在使用用戶提供的數據時,這也是避免XSS漏洞的好辦法。通過使用'htmlspecialchars()',您可以確保用戶數據不能被解釋爲原始HTML。 – Brad
echo "<a href='". $type=='group' ? 'link_a' : 'link_b';."'>".$usaname."</a>
您不能在超鏈接或打印的任何文本中使用if語句。 相反,你應該有這樣的代碼,保持HTML以外的條件(和其他)函數打印。
if ($type == "group"){ $link = "link_a"; } else { $link = "link_b"; }
echo "<a href='$link'>$usaname</a>
三元運算符在這種情況下很方便。
echo "<a href='" . ($type == 'group' ? 'link_a' : 'link_b') . "'>" . $usaname . "</a>";
你應該做這樣的事情:
echo "<a href=\"" . ($type == "group") ? "link_a" : "link_b" . "\"></a>
這大概是我能找到的最短和最徹底的方法。
使用三元運算
echo "<a href='". ($type == 'group' ? 'link_a' : 'link_b') ."'>" . $username ."</a>";
我看到首發 –
編碼就像是行不通的兩條print語句。在打印出任何HTML之前,你應該計算出所有的邏輯,然後將正確的數據發送到HTML並根據需要進行打印。看看模型/視圖/控制器體系結構。你正在做的是創建難以閱讀和維護的意大利麪代碼。 – thenetimp