10

私はphpであなたが変数の中に変数を埋め込むことができることを知っています:

<? $var1 = "I\'m including {$var2} in this variable.."; ?>

しかし、私はどのように、そして変数内に関数を含めることが可能かどうか疑問に思いました。私はただ書くことができることを知っています:

<?php
$var1 = "I\'m including ";
$var1 .= somefunc();
$var1 = " in this variable..";
?>

しかし、出力用の長い変数があり、毎回これを実行したくない場合、または複数の関数を使用したい場合はどうなりますか?

<?php
$var1 = <<<EOF
    <html lang="en">
        <head>
            <title>AAAHHHHH</title>
            <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        </head>
        <body>
            There is <b>alot</b> of text and html here... but I want some <i>functions</i>!
            -somefunc() doesn't work
            -{somefunc()} doesn't work
            -$somefunc() and {$somefunc()} doesn't work of course because a function needs to be a string
            -more non-working: ${somefunc()}
        </body>
    </html>
EOF;
?>

または、そのコードの負荷を動的に変更したい場合:

<?
function somefunc($stuff) {
    $output = "my bold text <b>{$stuff}</b>.";
    return $output;
}

$var1 = <<<EOF
    <html lang="en">
        <head>
            <title>AAAHHHHH</title>
            <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        </head>
        <body>
            somefunc("is awesome!") 
            somefunc("is actually not so awesome..") 
            because somefunc("won\'t work due to my problem.")
        </body>
    </html>
EOF;
?>

上手?

4

3 に答える 3

25

文字列内の関数呼び出しは、PHP5以降、呼び出す関数の名前を含む変数を持つことでサポートされています。

<?
function somefunc($stuff)
{
    $output = "<b>{$stuff}</b>";
    return $output;
}
$somefunc='somefunc';
echo "foo {$somefunc("bar")} baz";
?>

「」を出力しますfoo <b>bar</b> baz

ただし、文字列の外部で関数を呼び出す方が簡単です(これはPHP4で機能します)。

<?
echo "foo " . somefunc("bar") . " baz";
?>

または一時変数に割り当てます。

<?
$bar = somefunc("bar");
echo "foo {$bar} baz";
?>
于 2008-09-13T08:45:42.483 に答える
2

"bla bla bla".function("blub")." and on it goes"

于 2008-09-13T08:46:27.410 に答える
-1

Jason W が言ったことを少し拡張します。

ただし、(これはPHP4で機能します)どちらかを呼び出す方が簡単だと思います
文字列外の関数:

<?
echo "foo" . somefunc("バー") . "バズ";
?>

次のように、この関数呼び出しを html に直接埋め込むこともできます。

<?

関数 get_date() {
    $date = `日付`;
    $日付を返します。
}

関数 page_title() {
    $title = "今日の日付: ". get_date() ."!";
    echo "$タイトル";
}

関数 page_body() {
    $body = "こんにちは";
    $body = ", 世界!";
    $body = "\n 
\n"; $body = "今日は: " . get_date() . "\n"; } ?> <html> <頭> <タイトル><? ページタイトル(); ?></タイトル> </head> <本体> <? page_body(); ?> </body> </html>
于 2008-09-14T11:00:57.953 に答える