Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在使用echo时将字符串与函数调用连接起来?_Php_String Concatenation - Fatal编程技术网

Php 如何在使用echo时将字符串与函数调用连接起来?

Php 如何在使用echo时将字符串与函数调用连接起来?,php,string-concatenation,Php,String Concatenation,我想在我的echo'ed html字符串中使用从两个函数调用返回的值 以下工作很好: echo '<li><a href="'; echo the_permalink(); echo '">'; echo the_title(); echo '</a></li>'; echo''; 。。。但是我怎样才能在一个语句中得到它们呢; printf( '<li><a href="%s">%s</a></li&

我想在我的echo'ed html字符串中使用从两个函数调用返回的值

  • 以下工作很好:

    echo '<li><a href="';
    echo the_permalink();
    echo '">';
    echo the_title();
    echo '</a></li>';
    
    echo'
  • ';
    。。。但是我怎样才能在一个语句中得到它们呢;
    printf( '<li><a href="%s">%s</a></li>', the_permalink(), the_title() );
    
    使用串联(不需要换行):

    echo'
  • ';
    echo“
  • ”;
  • echo'
  • ';
    出现问题的原因是永久链接()和标题()没有返回,它们相互呼应。而是使用获取永久链接()$post->post\u title。请记住get\u permalink()需要post id($post->id)作为参数。我知道这很烦人,而且违反直觉,但这就是Wordpress的工作原理(请参阅对这个答案的评论中的主观性)

    这就解释了为什么第二个例子适用于你的第一个问题。如果调用从字符串中打印的函数,则回显将在字符串结尾之前输出

    因此:

    echo ' this should be before the link: '.the_permalink().' But it is not.';
    
    将无法按预期工作。相反,它将输出以下内容:

    http://example.com this should be before the link: But it is not.
    
    在PHP中,可以使用单引号和双引号。当我用HTML构建字符串时,我通常以单引号开始字符串,这样,我就可以在字符串中使用与HTML兼容的双引号,而无需转义

    因此,要将其四舍五入,它看起来像:

    echo '<li><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>';
    
    echo'
  • ';
    或者按照您最初的要求,为了简单地避开它们,在引用之前加上反斜杠。同样(单引号已删除)

    echo“
  • ”;

    当然,这是假设您是从循环中调用它,否则需要比这多一点才能获得所需的输出。

    使用
    。它显示或返回当前文章的标题。它在某种程度上重复了_title()的功能,但通过剥离HTML标记并将某些字符(包括引号)转换为其等效字符实体,提供了标题的“干净”版本

    @Mark:PHP使用“.”进行字符串连接!您的语句将尝试将字符串的数值添加到一起Hee-我前几天因为以JavaScript文字形式声明数组而遇到麻烦。由于某些原因,该数组不起作用,链接未正确解析。您的函数是否返回字符串?-什么意思是解析不正确?我不确定,如何测试?好吧,它不显示为链接,链接本身显示后是标题、所有文本、无可点击链接。发布一个生成链接的示例-如果此页面上的其他解决方案也不起作用,则肯定会有另一个问题-您确定您的原创作品吗?示例输出:#7--是,我最讨厌wordpress:函数应该返回值,而不是打印它们;我可以自己打印返回值。我同意。然而,这些函数是为对PHP知之甚少的人(占WP社区的95%)创建的。_title()比echo$post->post_title对新手更友好。这是WP取得如此成功的众多原因之一。对我来说,这是第二天性,我使用这两个版本,具体取决于位置。没错,但是
    echo the_title()
    并不难,我认为
    echo
    对任何人来说都很熟悉,给开发人员留下了更多的自由。函数在更高版本中进行了重构,以支持echo和return,但这两者几乎没有任何一致性。我反对“echo the_title()”的理由是冗余。如果您建议的20-30个“echo”被省略,而使用了一个模板友好的函数,那么模板就更漂亮了。dot版本会在调用echo之前评估要连接的所有项目(例如调用函数)。逗号版本在运行echo构造时逐个计算并打印参数。(PHP手册中的一条注释——更好地解释了这一点。)因为,您不希望在调用echo和“
  • echo ' this should be before the link: '.the_permalink().' But it is not.';
    
    http://example.com this should be before the link: But it is not.
    
    echo '<li><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>';
    
    echo "<li><a href=\"".get_permalink($post->ID)."\">".$post->post_title."</a></li>";