2017-04-27 42 views
0

變量後的字符串我想在PHP變量後,來連接字符串。點運算符不起作用。串連在PHP

foreach ($get_cont as $line) 
{ 

    #var_dump($line); 
    if (strpos($line, "a href")) 
    { 

     #echo "$line"; 
     $get_core++; 
     if ($get_core == 3) 
     { 
      #echo $line; 
      break 1; 
     } 
    } 
} 
#echo $line; 
$array = explode(' ', $line); 
$core = $array[count($array) - 1]; 
$core = substr_replace($core, "", -1); 

$cmd = "cmd /c curl http://" . $server["server_name"] . ":" . $server["port"] . "/solr" . "/" . $core . "/admin/registry.jsp"; 
var_dump($cmd); 

輸出應該是這樣的:

cmd /c curl http://server_name:8080/solr/"value of variable core"/admin/registry.jsp. 

請建議。 「」操作員不工作。

+1

當您詢問有關錯誤的問題**始終**包含**錯誤日誌**。添加'error_reporting(E_ALL); ini_set('display_errors',1);'在'php'腳本的頂部,它返回什麼? –

+0

請分享'print_r($ get_cont)' –

+0

您的語法不可靠。檢查你的報價。 – Luke

回答

0
$cmd = "cmd /c curl http://" . $server["server_name"] . ":" . $server["port"] . "/solr" . "/" . $core . "/admin/registry.jsp"; 

您在變量中使用了雙引號來表示數組鍵,並用於標識文本字符串。您可以在語法高亮中看到它將這些部分解析爲字符串而不是鍵作爲變量/數組的一部分。您應該使用單引號或使用大括號來聲明變量。

嘗試

$cmd = "cmd /c curl http://{$server['server_name']}:{$server['port']}/solr/{$core}/admin/registry.jsp"; 

OR

$cmd = "cmd /c curl http://" . $server['server_name'] . ":" . $server['port'] . "/solr/" . $core . "/admin/registry.jsp"; 
+0

我的語法是在第二個例子可怕(錯過了大部分的級聯)。它已被糾正。 – Luke

+0

是不是應該是'$ _SERVER [「SERVER_NAME」]'等堡壘。似乎OP是困惑 – Akintunde007

+0

它沒有工作。主要的問題是,無論我試圖在「$ core」之後連接,它都不會被添加。 –

0

你不能$server訪問超全局變量$_SERVER,對於這一點,你必須使用$_SERVER,對於訪問服務器的名稱,你應該使用$_SERVER["SERVER_NAME"]和訪問服務器端口,你應該使用$_SERVER["SERVER_PORT"]

更改爲:

$cmd = "cmd /c curl http://" . $server["server_name"] . ":" . $server["port"] . "/solr" . "/" . $core . "/admin/registry.jsp"; 

此:

$cmd = "cmd /c curl http://" . $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . "/solr/" . $core . "/admin/registry.jsp"; 

試試這個:

<?php 
$get_cont=array("<a href='www.google.com'>"); 
foreach ($get_cont as $line) 
{ 

    #var_dump($line); 
    if (strpos($line, "a href")) 
    { 

     #echo "$line"; 
     $get_core++; 
     if ($get_core == 3) 
     { 
      #echo $line; 
      break 1; 
     } 
    } 
} 
; 
$array = explode(' ', $line); 

$core = $array[count($array) - 1]; 
$core = substr_replace($core, "", -1); 


echo $cmd = "cmd /c curl http://" . $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . "/solr/" . $core . "/admin/registry.jsp"; 
+0

它沒有工作。主要問題是,不管我在$ core後面添加什麼,它都不會被追加。 –

+0

@MukundSharma你可以分享'print_r($ get_cont);'? –

+0

陣列([0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9 ] => [10] => [11] => [12] => [13] => 歡迎來到Solr! [14] => Solr的[15] => [16] => [17] =>管理CPAT [18] => [19] => [20] =>管理下文[21] => [22 ] => [23] =>管理infra_temp [24] => [25] => [26] =>管理know_autosuggest [27] => [28] => [29] =>管理wordviz [30] = > [31] => [32] => Admin ps_sln_web [33] => [34] => [35] => Admin ps_sln_web_temp [36] => [37] => [38] => Admin knuggets_tags_autosuggest [39] => [40] => [41] =>聯繫knuggets_tags_autosuggest_temp [42] => –

0

下面爲我工作。我將值作爲字符串處理,而不是將其存儲在數組中:

     #echo $line; 
         $core=""; 
         $core_temp=""; 
         $core_temp=strip_tags($line); 
         $core=substr($core_temp, strpos($core_temp, " ") + 1); 

         #$array=explode(' ', $line); 
         #$core = $array[count($array)-1]; 
         #$core=substr_replace($core, "", -1); 
         #var_dump($core); 
         #echo "$core";