1

我正在为我正在处理的一个网站构建一个动态链接系统,这样你就可以放一些类似的东西{_LINK_20_},它会根据用户是否启用或禁用 javascript 来动态输入 onclick 事件或 href 属性.

唯一的问题是我最初使用循环来浏览文档,但我意识到正则表达式会更好地工作,这样我就可以拥有不连续的链接 ID,它仍然会检测到它们。

我只是在示例页面中对此进行测试,然后再尝试将其嵌入我的 OOP 后端,所以这里是示例代码:

$results = array();
$string = 'asdfasdf {_LINK_2_} asdf {_LINK_1_}{_LINK_3_} asdf{_LINK_8_}';
$exp = '/{_LINK_<0-9>+_}/';
$find = preg_match($exp, $string, $results);

但是,$results当我使用print_r(). 我在正则表达式语法方面几乎是一个完整的新手,所以请放轻松。:)

我真正想做的只是保存匹配文本中的数字,这样我就可以遍历正则表达式结果并根据需要替换每个链接,而无需调用preg_replace()or str_replace()

我也试过这个preg_match_all()功能,但也没有用。在此先感谢,对不起,我在正则表达式方面很糟糕!

4

1 回答 1

2

试试这个正则表达式:

$exp = '/{_LINK_[0-9]+_}/'

并使用 preg_match_all。

字符类是用方括号('[]')实现的,而不是尖括号('<>')。只需使用正确的括号即可使您的正则表达式起作用。

如果你真的想只保存数字,你可以使用这个正则表达式:

$exp = '/(?<={_LINK_)[0-9]+(?=_})/'

单击此处在 RegExr 中查看它。它通过使用后向和前向来工作,它们是零宽度断言(意味着它们在字符之间匹配,而不是匹配字符本身)关于在其他正则表达式之后或之前的内容。

在ideone.com上查看。

于 2013-01-23T23:03:59.620 回答