在呈现之前使用 PHP 替换 HTML 页面中的信息
Replacing info in HTML page using PHP before rendering
编辑:输入后我认为这种方法行不通。我想要做的就是找到一种更简单的方法来在较长的 HTML 页面中键入 <?=
和 ?>
。非常感谢任何想法。
稍后: 是的,这个 是 一个非启动器所以我正在调整我的 IDE (很棒的 PhpStorm)来处理这个和可能会开始使用 Twig "soon".
================================
我发现没完没了地输入 <?=
=>
绝对是一场噩梦。出于某种原因,我真的不记得键盘上按键的位置并且在 shift/nonshift 上感到困惑(64 岁的大脑 and/or 我年轻时吃过太多大麻?)并且每次都必须搜索它们并做就像刚才我输入了 + 而不是 =!
我还不想使用像 Mustache 这样的全功能模板引擎,只是想用 {{{
[=21= 之类的东西替换 <?=
和 =>
].
为了实验,我使用了 jjjj
和 kkk
。
为了尝试这样做,我将整个 HTML 页面放入一个名为 $mypage 的 HEREDOC 变量中。目前只有一个替代目标,但如果我能让它工作,这显然会进入循环。
$start = strpos($myPage, "jjjj");
$end = strpos($myPage, "kkk");
substr_replace($myPage,"<?=$",$start,4);
substr_replace($myPage,"?> ",$end, 3);
$insName = "Boo";
echo $myPage;
在 HTML 我有:
<label for="clientFirstName">First name* jjjjinsNamekkk</label>
echo
工作正常并正确显示页面,但 未 替换字符串。更糟糕的是,我想我可能完全错了。
如果我将正文中的 jjjj
替换为 <?=$
,那会被解释为还是只是 echoed
作为屏幕上的文本?
此外,考虑到我倾向于使用 includes 相当多的内容,它们会在这个 echo/HEREDOC 策略中起作用吗?我怀疑不是。
感谢您提出任何建议。
PS 是的,我知道这是一种糟糕的做事方式,但这是针对字面上大约 10 人的 alpha,所以我只是快速而肮脏地做事。 (老实说,这是我最近编程的唯一方式!)
您的(编辑过的)问题是您的 IDE 或增强型编辑器通常会为您做的事情。据我所知,您似乎使用了 PHPStorm。您可以为此使用 Live Template。 PHP 有一些预定义的,但我不认为你想要的是那里。
例如,创建一个插入整个<?= ?>
- 在编辑器中输入
<?=$END$ ?>
($END$ 定位光标)
- 突出显示上面的文字
- ctrl-shift-a / cmd-shift-a(适合您的操作系统)
- 在弹出窗口中输入 'save as' 然后 select 'Save as Live Template'
- 输入合适的缩写,例如'pie'(PHP 内联表达式)
- 必要时编辑模板文本
- 点击应用
此后您可以在编辑器中键入 'pie',然后按 Tab 键以插入文本。
编辑:输入后我认为这种方法行不通。我想要做的就是找到一种更简单的方法来在较长的 HTML 页面中键入 <?=
和 ?>
。非常感谢任何想法。
稍后: 是的,这个 是 一个非启动器所以我正在调整我的 IDE (很棒的 PhpStorm)来处理这个和可能会开始使用 Twig "soon".
================================
我发现没完没了地输入 <?=
=>
绝对是一场噩梦。出于某种原因,我真的不记得键盘上按键的位置并且在 shift/nonshift 上感到困惑(64 岁的大脑 and/or 我年轻时吃过太多大麻?)并且每次都必须搜索它们并做就像刚才我输入了 + 而不是 =!
我还不想使用像 Mustache 这样的全功能模板引擎,只是想用 {{{
[=21= 之类的东西替换 <?=
和 =>
].
为了实验,我使用了 jjjj
和 kkk
。
为了尝试这样做,我将整个 HTML 页面放入一个名为 $mypage 的 HEREDOC 变量中。目前只有一个替代目标,但如果我能让它工作,这显然会进入循环。
$start = strpos($myPage, "jjjj");
$end = strpos($myPage, "kkk");
substr_replace($myPage,"<?=$",$start,4);
substr_replace($myPage,"?> ",$end, 3);
$insName = "Boo";
echo $myPage;
在 HTML 我有:
<label for="clientFirstName">First name* jjjjinsNamekkk</label>
echo
工作正常并正确显示页面,但 未 替换字符串。更糟糕的是,我想我可能完全错了。
如果我将正文中的 jjjj
替换为 <?=$
,那会被解释为还是只是 echoed
作为屏幕上的文本?
此外,考虑到我倾向于使用 includes 相当多的内容,它们会在这个 echo/HEREDOC 策略中起作用吗?我怀疑不是。
感谢您提出任何建议。
PS 是的,我知道这是一种糟糕的做事方式,但这是针对字面上大约 10 人的 alpha,所以我只是快速而肮脏地做事。 (老实说,这是我最近编程的唯一方式!)
您的(编辑过的)问题是您的 IDE 或增强型编辑器通常会为您做的事情。据我所知,您似乎使用了 PHPStorm。您可以为此使用 Live Template。 PHP 有一些预定义的,但我不认为你想要的是那里。
例如,创建一个插入整个<?= ?>
- 在编辑器中输入
<?=$END$ ?>
($END$ 定位光标) - 突出显示上面的文字
- ctrl-shift-a / cmd-shift-a(适合您的操作系统)
- 在弹出窗口中输入 'save as' 然后 select 'Save as Live Template'
- 输入合适的缩写,例如'pie'(PHP 内联表达式)
- 必要时编辑模板文本
- 点击应用
此后您可以在编辑器中键入 'pie',然后按 Tab 键以插入文本。