2017-06-27 74 views
0

我檢查了這個帖子,但沒有運氣: PHP - concatenate or directly insert variables in string如何在回聲字符串和函數調用中插入變量?

有問題的犯罪嫌疑人:showUser(3, change, " . $name . ");'> $名稱打破了代碼;第二個$名稱確實有效。該變量不會傳遞給該函數。 我一直在測試幾個小時才能使這個工作!它似乎應該工作。 我試圖檢查應用程序中的其他地方,看看問題可能是什麼,這似乎是罪魁禍首。

<?php 
if ($q !== "") { 
$q = strtolower($q); 
$len=strlen($q); 
foreach($a as $name) { 
    if (stristr($q, substr($name, 0, $len))) { 
     if ($hint === "") { 

      $hint = "<p onClick='DoIt(); showUser(3, change, " . $name . ");'>" . $name . "</p>"; 
     } else { 
      $hint .= "\n" . "$name"; 
     } 
    } 
} 
?> 
+0

爲什麼需要引號和串聯?如果有雙引號,則可以直接在字符串中寫入變量。 – TricksfortheWeb

+0

使用適當的事件處理程序,只需輸出數據屬性中的名稱,而不是 – adeneo

+0

就足夠容易通過jquery根據單擊的內容拉出'name'。 – rtfm

回答

0

JavaScript可能需要$ name才能被引用。

$hint = "<p onClick='DoIt(); showUser(3, change, \"" . $name . "\");'>" . $name . "</p>"; 

像這樣轉義引號會導致它們出現在JS函數調用中。

在一行中混合PHP,JavaScript和HTML時,引號通常是一個棘手的問題。

+1

非常感謝Kevin_Kinsey!有用!!樂趣繼續! :d – Dipz

0

您可以引用您的變量是這樣

if ($q !== "") { 
    $q = strtolower($q); 
    $len = strlen($q); 
    foreach($a as $name) { 
    if (stristr($q, substr($name, 0, $len))) { 
     if ($hint === "") { 
     $name = "'" . $name . "'"; 
     $hint = '<p onClick="DoIt(); showUser(3, change, ' . $name . ');">' . $name . '</p>'; 
     } else { 
     $hint .= "\n" . "$name"; 
     } 
    } 
    } 
} 
相關問題