php - 使用嵌入式代码(PHP、Ruby 等)解析 HTML

标签 php html ruby-on-rails ruby erb

<分区>

好的,所以你们都知道 PHP 可以解析 .php包含 HTML 代码和嵌入式 PHP 代码的文档。而且我相信 Ruby (Erb) 允许几乎相同的事情。

但是,它是如何做到的呢? (相信我,我已经仔细研究了源代码,但是在 100 万行代码中发现这样的东西并不是最简单的事情)。

我的想法是:

  • 重要的是正在做什么echo编辑
  • 初始的 PHP/HTML 文本被转换为有效的 PHP 脚本
  • PHP代码,如<?php所示和 ?>起点/终点,保持原样
  • 其余使用echo转换声明。

例如:

<html>
     <head>
           <title><?php echo "This is the title"; ?></title>
     </head>
     <body>
     </body>
</html>

转换为:

echo "<html>";
echo "<head>";
echo "<title>";
echo "This is the title";
echo "</title>";
echo "</head>";
echo "<body>";
echo "</body>";
echo "</html>";

这有意义吗?


P.S. 如果您想知道这个问题的本质,我目前正在为我自己的语言构建类似的东西。它工作得很好,虽然我遇到了一些较长输入文档的转换速度问题,所以我虽然探索我的替代品......:-)

最佳答案

我可能会因为没有任何引用资料而被否决,但是...

What you're referring to is how every referential IT system works. It takes data from a dynamic resource (either external or on-page) & appends it into the page

我想叫它 parsing 但我认为这不是正确的技术术语。我的想法是在 PHP 中,您的页面将首先通过 PHP(它将任何 PHP 元素输出为纯文本),然后将解析后的文档发送到前端 HTML 处理器

所以为了回答您的问题,我想说您可能过于复杂了。 HTML 是输出的基本标准,那么为什么要重新发明轮子呢?您的解析器应该只查找其相关标签,然后运行其中的代码。它不必识别内部的 HTML - 只需将其全部视为纯文本,除非您想呈现更多代码

If what you proposed was right, we wouldn't have to write any HTML in Rails or PHP. We'd just use the in-built methods

例如:

<p><? echo "hello" ?></p>

在我的简单定义中,PHP 将首先呈现 <? ?> 的“纯文本”输出。 ,然后将格式化后的页面以HTML格式发送给前端

关于php - 使用嵌入式代码(PHP、Ruby 等)解析 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23488861/

相关文章:

javascript - 强制 !important 类与 js-jquery

c# - Webservice PHP 不接收 base64 大图像

php - 在 Laravel 5.4 中使用 if 条件获取图像

ruby-on-rails - Gem 环境设置不正确

ruby-on-rails - 运行从 GitHub 下载的 Rails 应用程序 (database.yml)

javascript - 是否可以在用户离开时删除整个网页?

javascript - 如何附加文本框值以动态添加字段?

html float 底部

html - 使用 CSS3 连续向上动画气泡?

ruby-on-rails - ruby to_json :methods arguments