我得到了我原来的正则表达式的工作,我想我可以让这个工作,因为它非常相似;但是,我不能。
此代码用于模板系统,其中链接由 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。我也尝试转义冒号 (:),但它仍然显示相同的输出。
非常感谢任何帮助,因为正如我之前所说,我远非正则表达式专家。:(