【发布时间】:2010-02-15 03:48:09
【问题描述】:
我正在创建一个项目,我需要能够使用正则表达式(或者如果其他东西更可取?)
基本上,我需要转换一个 PHPish 标记代码页,以便将“非代码”转换为“代码”。例如:
原件:
<?code
echo 'some text';
?>
<head>
</head>
<body>
</body>
<?code
echo '</html>';
?>
转换:
<?code
echo '<html>';
echo '
<head>
</head>
<body>
</body>';
echo '</html>';
?>
如何在考虑引号的同时工作? (如<?code $var='<?code stuff ?>';?>
另外,如果有人向我提供了一些东西来检测包含的文件,(替换为首先“预先拥有”文件然后包含它的东西)(其中包含类似于 PHP)
这甚至可以使用正则表达式吗?我知道您不打算尝试使用正则表达式解析 HTML,但这并不是在尝试解析它,它对于标记和所有内容的方式真的很愚蠢..
此外,这个项目实际上将在 Ruby(即预处理器)中实现,所以如果 Ruby 有一些东西可以帮助实现这一点,那就去做吧。
我知道代码看起来很像 PHP,但那是因为它是,但它不会在 PHP 中实现,并且使用的“代码”实际上也不是 PHP,但它将使用<? 类型机制用于在标记中包含代码。
编辑:还请注意,标记内的语言实际上可以是 Ruby。因此它可以包含具有结束代码标记的引号和 cmets。
【问题讨论】:
-
不,正则表达式无法进行这样的替换。
-
那么你将如何编写一个相当快的解析器来完成它呢?正则表达式肯定能帮上忙吗?
-
回声标记在我看来很可疑。最后,这就是
<?php和?>的用途。你确定你需要这个吗?你考虑过输出缓冲吗? -
这实际上与 PHP 无关,但它是我能解释它的最简单的方法。实际上不会有任何 PHP 被转换,它是用于编写与 PHP 非常相似的东西这是标记。
-
好的,但是您正在尝试转换 PHP(嵌入了 HTML)源文件,对吗?只是不是使用 PHP 而是 Ruby,对吗?
标签: ruby regex preprocessor