簡體   English   中英

PHP將變量發送到file_get_contents()

[英]PHP sending variables to file_get_contents()

我希望能夠通過file_get_contents()將一些變量發送到文件。

這是firstfile.php:

<?php
$myvar = 'This is a variable';
// need to send $myvar into secondfile.php
$mystr = file_get_contents('secondfile.php');
?>

這是secondfile.php:

The value of myvar is: <?php echo $myvar; ?>

我希望變量$mystr等於'The value of myvar is: This is a variable' $mystr 'The value of myvar is: This is a variable'

還有其他功能可以讓你在PHP中執行此操作嗎?

獲取文件內容運行腳本之間存在很大差異:

  • include - 此PHP指令將指定的文件作為腳本運行 ,范圍與進行include調用的范圍相同。 因此,要將變量“傳遞”給它,您只需在調用include之前定義它們。 include只能在本地使用 (只能包含與PHP服務器在同一文件系統上的文件)。

  • file_get_contents - 在本地獲取文件時,只會檢索文件中包含的文本。 沒有完成PHP處理,因此無法“傳遞”變量。 如果您在上面的示例中檢查$myvar ,您將看到它包含確切的字符串“ <?php echo $myvar; ?> ” - 它尚未執行。

    但是,PHP通過允許file_get_contents引入“遠程”文件的內容(一個互聯網地址)來混淆一些事情。 在這種情況下,概念是相同的 - PHP只是提取該地址中包含的任何內容的原始結果 - 但是PHP,Java,Ruby或該遠程服務器上運行的任何其他內容可能已執行某些操作以產生該結果。

    在這種情況下,您可以根據URL的規范(如果它是API或類似的東西)在URL中傳遞變量(稱為GET請求參數)。 沒有辦法傳遞您選擇的未指定在該遠程服務器將處理的腳本中處理的變量。

    注意:提到的“遠程服務器” 可能是你自己的服務器,但要小心,因為如果你真的不知道這一切是如何工作的話,這會使事情更加混亂(它成為第二個完全獨立的請求)。 通常沒有充分的理由這樣做而不是使用include ,即使它們可以實現類似的結果。

ob_start();
include 'secondfile.php';
$myvar = ob_get_clean();

但請注意:對於代碼中的許多ob_start ,通常是一個標志,你應該定義返回字符串的函數,然后你可以選擇回顯或不回應。

您可以使用sprintf函數,例如:firstfile.txt

The value of my var is: %s

secondfile.php

<?php
$f = file_get_contents("firstfile.txt");
$var = "some";
echo sprintf($f, $var);

結果將是

我的var的值是:some

以下代碼片段顯示了如何使用PHP函數file_get_contents發送HTTP post請求的簡單方法:

<?php

$url = 'http://url.com/path';
$data = array('param1' => 'value1', 'param2' => 'value2')

// use key 'http' even if you send the request to https://...
$options = array('http' => array(
    'method'  => 'POST',
    'content' => http_build_query($data)
));

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

print_r($result);

或者在URL(php)和file_get_contents()中傳遞變量

我看到這個相當古老的討論,7年后我的回答可能不太相關,但只是想分享如何解決同樣的問題。 我剛在secondfile.php中添加了一個虛擬文本(在我的情況下是ttt555rrrttt),然后我只是用我想要的字符串替換該文本。

$value_to_add = "some value";

$myvar = file_get_contents('secondfile.php');
$myvar = str_replace("ttt555rrrttt", "$value_to_add", $myvar);

這對我有用,也許它對其他人有用。

不知道從性能的角度來看會有多好,但是考慮到我用它來向用戶發送電子郵件模板,性能應該不是問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM