【发布时间】:2013-02-23 16:57:18
【问题描述】:
我正在使用正则表达式来匹配我的模板文件中的链接对象。基本上,一个链接被识别出来,然后根据用户是否启用了 JS 将其转换为 javascript 或 HTML。
示例链接如下所示:
<div id="someDiv">{_LINK_9_link text here_noclass_noid_}</div>
这是我用来在代码中查找这些对象的正则表达式:
$linkExp = '/\{_LINK_([0-9]+)_([a-z0-9 ]+)_([a-z0-9]+)_([a-z0-9]+)_\}/i';
就目前而言,此代码可以很好地执行上述示例,其中链接文本可以包含字母、数字或空格。但是,当我尝试在链接文本中添加 / 或 - 时,我无法让正则表达式继续工作。
这是我尝试过的:
<!-- html link code -->
<div id="someDiv">{_LINK_9_tips/suggestions_noclass_noid_}</div>
// php link expression
$linkExp = '/\{_LINK_([0-9]+)_([a-z0-9 \/\-]+)_([a-z0-9]+)_([a-z0-9]+)_\}/i';
但由于/,它仍然找不到匹配项。如果我去掉斜线,它工作正常。关于如何在正则表达式中匹配文字 / 或 - 的任何想法?允许比字母、数字、空格、连字符或斜杠更多的字符会很好,但我是正则表达式的新手,所以我真的不知道我在做什么。如果有人可以帮我修复它,以便它可以匹配链接文本的任何内容(甚至是符号,例如 &、%、$ 等),那也将不胜感激。
提前致谢。
【问题讨论】:
-
1.
[0-9] = [\d]2.[a-Z0-9] = [\w] -
你的第二个正则表达式匹配 html 对我来说很好..你是如何使用它的?
-
回声@ExplosionPills,it works for me
-
@DreamEater
\w还包括下划线,并且根据语言环境,它可以包括其他字母字符(后者可能不是问题) -
@Sepster,是的,空格字符绝对没问题。
标签: php regex preg-replace preg-match pcre