如何在分解和正则表达式之间进行选择


How to choose between explode and regex

我的字符串包含一些[hotkey]形式的"热键"。例如:

"This is a sample string [red] [h1]"

当我用php函数处理这个字符串时,我希望函数输出原始字符串,如下所示;

<font color='red'><h1>This is a sample string</h1></font>

我想使用这个函数纯粹是为了方便起见,以便于打字。我可能会使用字体标记或div或其他什么,我们不必赘述。重点是这一点;热键将导致原始字符串被包装到中

<something here>original string<and something there>

因此,函数首先需要确定是否有热键。这很容易;只需检查是否存在[

然后,我们需要处理字符串以确定存在哪些热键,并进入要部署哪些包装器的业务逻辑。

最后,我们必须清除热键中的原始字符串,并返回结果。

我的问题是,如果有一个正则表达式可以更有效地实现这一点,那么下面的解析方法,我正计划将函数实现为.

步骤1使用[分隔符将字符串分解为数组

步骤2遍历每个数组元素,看看是否存在关闭的],它是否形成了定义的热键之一,如果是,请执行必要的操作。

显然,这种方法没有使用任何regex功能。我想知道regex是否可以在这里提供帮助。或者,你有什么更好的方法可以建议吗?

如果[]是您唯一需要担心的delimeter,您可能会使用strtok

我英语说得不好,但我看到了你的例子:

"This is a sample string [red] [h1]"

<font color='red'><h1>This is a sample string</h1></font>

如果我是你:

$red = substr( $chaine, strpos($chaine, '['), strpos($chaine, ']') );