【问题标题】:Why am i getting a ctrl-J on the end of this PHP generated line?为什么我在这个 PHP 生成行的末尾有一个 ctrl-J?
【发布时间】:2011-01-31 00:06:44
【问题描述】:

我正在尝试从 PHP 生成 Java WebStart JNLP 文件。我会把整个代码放在最后,但我的具体问题是这行 PHP:

<property name="jnlp.versionEnabled" value="true" />
<?php
     echo "<property name=\"javaws.username\" value=\"" . $userid . "\" />"  
?>
<property name="server.port" value="3000" />

经过一番挣扎后,我发现 PHP 生成的行最后带有一个 ctrl-J。这完全搞砸了Webstart。为什么要这样做,我该如何阻止它? PHP 的执行环境是 OpenSolaris 上的 PHP5。

此文件的完整代码如下供参考。 (Windows部分不用管,我是在Mac上工作的。等mac部分正常工作后我会修复它。)

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://fgdztgab.joyent.us/snowmen" href="snowman.php">
 <information>
    <title>Snowman</title>
    <vendor>The RedDwarf Project</vendor>
    <description kind="one-line">Game</description>
    <description kind="short">Project Snowman Demo RedDwarf Game</description>
    <description kind="tooltip">Project Snowman</description>
    <shortcut online="false"><desktop/><menu submenu="Project Snowman"/></shortcut>
 </information>
 <security>
 <all-permissions/>
 </security>

 <resources os="Mac" >
    <j2se version="1.6+" initial-heap-size="32m" max-heap-size="1024m" />
    <property name="jnlp.versionEnabled" value="true" />
    <?php 
         echo "<property name=\"javaws.username\" value=\"" . $userid . "\" />" 
    ?>  
    <property name="server.port" value="3000" />
    <property name="server.host" value="fgdztgab.joyent.us" />
    <nativelib href="projectsnowman/snowman-client-0.2-SNAPSHOT-macbinaries.jar"/>

<jar href="projectsnowman/snowman-client-jnlp-0.2-SNAPSHOT.jar"/>
<jar href="projectsnowman/snowman-client-0.2-SNAPSHOT.jar" main="true"/>
<jar href="projectsnowman/sgs-client-0.10.1.jar"/>
<jar href="projectsnowman/sgs-shared-1.12.jar"/>
<jar href="projectsnowman/mina-core-1.1.0.jar"/>
<jar href="projectsnowman/slf4j-api-1.4.0.jar"/>
<jar href="projectsnowman/slf4j-jdk14-1.4.0.jar"/>
<jar href="projectsnowman/snowman-common-0.2-SNAPSHOT.jar"/>
<jar href="projectsnowman/jme-2.0-S1.jar"/>
<jar href="projectsnowman/jme-terrain-2.0-S1.jar"/>
<jar href="projectsnowman/jme-audio-2.0-S1.jar"/>
<jar href="projectsnowman/jme-collada-2.0-S1.jar"/>
<jar href="projectsnowman/jme-effects-2.0-S1.jar"/>
<jar href="projectsnowman/jme-font-2.0-S1.jar"/>
<jar href="projectsnowman/jme-gamestates-2.0-S1.jar"/>
<jar href="projectsnowman/jme-model-2.0-S1.jar"/>
<jar href="projectsnowman/jme-scene-2.0-S1.jar"/>
<jar href="projectsnowman/jme-xml-2.0-S1.jar"/>
<jar href="projectsnowman/lwjgl-2.0rc2.jar"/>
<jar href="projectsnowman/lwjgl_util-2.0rc2.jar"/>
<jar href="projectsnowman/jorbis-0.0.17.jar"/>
<jar href="projectsnowman/fenggui-1.0-S1.jar"/>
<jar href="projectsnowman/environmentsystem-1.1.jar"/>
<jar href="projectsnowman/md5importer-1.2.4.jar"/>
<jar href="projectsnowman/snowman-client-0.2-SNAPSHOT-winbinaries.jar"/>
<jar href="projectsnowman/snowman-client-0.2-SNAPSHOT-macbinaries.jar"/>

 </resources>
 <resources os="Windows" >
    <j2se version="1.6+" initial-heap-size="32m" max-heap-size="1024m" />
    <property name="jnlp.versionEnabled" value="true"/>
    <property name="client.username" value="<?php echo($_GET['userid']); ?>" />
    <property name="server.port" value="3000" />
    <property name="server.host" value="fgdztgab.joyent.us" />
    <nativelib href="projectsnowman/snowman-client-0.2-SNAPSHOT-winbinaries.jar"/>

<jar href="projectsnowman/snowman-client-jnlp-0.2-SNAPSHOT.jar"/>
<jar href="projectsnowman/snowman-client-0.2-SNAPSHOT.jar" main="true"/>
<jar href="projectsnowman/sgs-client-0.10.1.jar"/>
<jar href="projectsnowman/sgs-shared-1.12.jar"/>
<jar href="projectsnowman/mina-core-1.1.0.jar"/>
<jar href="projectsnowman/slf4j-api-1.4.0.jar"/>
<jar href="projectsnowman/slf4j-jdk14-1.4.0.jar"/>
<jar href="projectsnowman/snowman-common-0.2-SNAPSHOT.jar"/>
<jar href="projectsnowman/jme-2.0-S1.jar"/>
<jar href="projectsnowman/jme-terrain-2.0-S1.jar"/>
<jar href="projectsnowman/jme-audio-2.0-S1.jar"/>
<jar href="projectsnowman/jme-collada-2.0-S1.jar"/>
<jar href="projectsnowman/jme-effects-2.0-S1.jar"/>
<jar href="projectsnowman/jme-font-2.0-S1.jar"/>
<jar href="projectsnowman/jme-gamestates-2.0-S1.jar"/>
<jar href="projectsnowman/jme-model-2.0-S1.jar"/>
<jar href="projectsnowman/jme-scene-2.0-S1.jar"/>
<jar href="projectsnowman/jme-xml-2.0-S1.jar"/>
<jar href="projectsnowman/lwjgl-2.0rc2.jar"/>
<jar href="projectsnowman/lwjgl_util-2.0rc2.jar"/>
<jar href="projectsnowman/jorbis-0.0.17.jar"/>
<jar href="projectsnowman/fenggui-1.0-S1.jar"/>
<jar href="projectsnowman/environmentsystem-1.1.jar"/>
<jar href="projectsnowman/md5importer-1.2.4.jar"/>
<jar href="projectsnowman/snowman-client-0.2-SNAPSHOT-winbinaries.jar"/>
<jar href="projectsnowman/snowman-client-0.2-SNAPSHOT-macbinaries.jar"/>

 </resources>
 <application-desc main-class="com.sun.darkstar.example.snowman.ClientApplication">
 </application-desc>
</jnlp>

【问题讨论】:

  • ^J 不只是一个标准的'\n' 新行吗?尝试通过dos2unix 运行整个文件(有时在系统上使用dtoxd2u)。
  • 不行,这是作为网络请求的动态输出生成的。

标签: php newline echo


【解决方案1】:

将您的编辑器设置为不生成或保存 .php 文件,并在末尾添加一个新行。

【讨论】:

  • 那不是问题。问题是脚本运行时 echo 命令的输出,该命令附加了一个 ctrl-J
【解决方案2】:

通过将不需要的 nl ​​移到文件末尾的 heredoc 格式解决,这很烦人但无害。

【讨论】:

  • 不要忘记将其作为正确答案,将其从“未回答的问题”列表中删除。 :)
【解决方案3】:

这可能有效:

<property name="jnlp.versionEnabled" value="true" />
<?php echo "<property name=\"javaws.username\" value=\"" . $userid . "\" />";?>  
<property name="server.port" value="3000" />

另外,该行的末尾不应该有; 吗?

【讨论】:

  • 半栏是可选的,因为只有一行。恐怕这仍然会影响 ctrl-J。似乎 echo 总是在最后生成一个 ctrl-J 。我通过移动到heredoc格式来修复它,所以ctrl-J在最后。
  • 那么这个怎么样:&lt;property name="javaws.username" value="&lt;?php echo $userid;?&gt;" /&gt; 你不回显整行,你只是将用户标识回显到值中。
猜你喜欢
  • 2020-02-07
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
相关资源
最近更新 更多