0

我得到了我原来的正则表达式的工作,我想我可以让这个工作,因为它非常相似;但是,我不能。

此代码用于模板系统,其中链接由 javascript 或 HTML 替换,具体取决于用户浏览器上是否启用了 JS。

示例字符串如下所示: help{:footerlink}{::helpFooter}

“帮助”将是链接本身中显示的文本。“footerLink”是应该应用于链接的 CSS 类 “helpFooter”是应该应用于链接的 CSS id

这是我尝试使用的代码:

$string = 'help{:footerlink}{::helpFooter}';
$classIDExp = '/([a-z0-9]+)\{:([a-z0-9]+)\}\{::([a-z0-9]+)\}/i';

$display = preg_replace($idexp, "$1", $string);
$class = preg_replace($idexp, "$2", $string);
$cssID = preg_replace($idexp, "$3", $string);

$curLink = 'Display Text: ' . $display . '<br />' .
           'Class: ' . $class . '<br />CSS ID: ' . $cssID;

echo $curLink;

此代码输出:

Display Text: help{:footerlink}{::helpFooter}
Class: help{:footerlink}{::helpFooter}
CSS ID: help{:footerlink}{::helpFooter}

正确的输出是:

Display Text: help
Class: footerlink
CSS ID: helpFooter

链接ID检索得很好,但是找不到显示文本、css类和css ID。我也尝试转义冒号 (:),但它仍然显示相同的输出。

非常感谢任何帮助,因为正如我之前所说,我远非正则表达式专家。:(

4

1 回答 1

2
if (preg_match($classIDExp, $string, $match)) {
  $display = $match[1];
  $class = $match[2];
  $cssID = $match[3];
}
于 2013-01-24T01:49:46.250 回答