我让我的原始正则表达式工作,我认为我可以让这个正则表达式工作,因为它非常相似;但是,我做不到。
此代码用于模板系统,其中链接由javascript或HTML替换,具体取决于用户浏览器上是否启用了JS。
示例字符串将如下所示:help{:footerlink}{::helpFooter}
"help“将是链接本身中显示的文本。"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。我也尝试转义冒号(:),但它仍然显示相同的输出。
我们非常感谢您的帮助,因为正如我之前所说的,我远非正则表达式方面的专家。:(
发布于 2013-01-24 09:49:46
if (preg_match($classIDExp, $string, $match)) {
$display = $match[1];
$class = $match[2];
$cssID = $match[3];
}https://stackoverflow.com/questions/14492556
复制相似问题