首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法让preg_replace()查找文本

无法让preg_replace()查找文本
EN

Stack Overflow用户
提问于 2013-01-24 09:43:22
回答 1查看 105关注 0票数 0

我让我的原始正则表达式工作,我认为我可以让这个正则表达式工作,因为它非常相似;但是,我做不到。

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

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

"help“将是链接本身中显示的文本。"footerLink“是应应用于链接的CSS类,"helpFooter”是应应用于链接的CSS id。

下面是我尝试使用的代码:

代码语言:javascript
复制
$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;

此代码输出:

代码语言:javascript
复制
Display Text: help{:footerlink}{::helpFooter}
Class: help{:footerlink}{::helpFooter}
CSS ID: help{:footerlink}{::helpFooter}

正确的输出应该是:

代码语言:javascript
复制
Display Text: help
Class: footerlink
CSS ID: helpFooter

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

我们非常感谢您的帮助,因为正如我之前所说的,我远非正则表达式方面的专家。:(

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-24 09:49:46

代码语言:javascript
复制
if (preg_match($classIDExp, $string, $match)) {
  $display = $match[1];
  $class = $match[2];
  $cssID = $match[3];
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14492556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档