我正在尝试制作一个与人名相匹配的动态正则表达式.它在大多数名称上都没有问题,直到我在名称的末尾遇到重音字符.
示例:一些FancyNamé
我到目前为止使用的正则表达式是:
/\b(Fancy Namé|Namé)\b/i
Run Code Online (Sandbox Code Playgroud)
像这样使用:
"Goal: Some Fancy Namé. Awesome.".replace(/\b(Fancy Namé|Namé)\b/i, '<a href="#">$1</a>');
Run Code Online (Sandbox Code Playgroud)
这根本不匹配.如果我用ae替换é,它就匹配得很好.如果我尝试匹配诸如"SomeFancyNaméa"这样的名字,它就可以了.如果我删除单词最后一个单词边界锚,它就可以正常工作.
为什么单词border flag不在这里工作?关于如何解决这个问题的任何建议?
我考虑过使用类似的东西,但我不确定性能惩罚会是什么样的:
"Some fancy namé. Allow me to ellaborate.".replace(/([\s.,!?])(fancy namé|namé)([\s.,!?]|$)/g, '$1<a href="#">$2</a>$3')
Run Code Online (Sandbox Code Playgroud)
建议?想法?
我创建了一个论坛,我们正在实现一个apc和memcache缓存解决方案来保存数据库的一些工作.
我开始使用像"Categories :: getAll"这样的键来实现缓存层,如果我有特定于用户的数据,我会用像用户ID之类的东西来附加密钥,这样你就可以得到"User::getFavoriteThreads|1471".当用户添加新的收藏夹线程时,我将删除缓存键,它将重新创建该条目.
然而,问题出现了:
我想在论坛中缓存线程.很简单,"论坛:: getThreads | $ iForumId".但是......通过分页,我必须将其分成几个缓存条目,例如
"Forum::getThreads|$iForumId|$iLimit|$iOffset".
Run Code Online (Sandbox Code Playgroud)
哪个好,直到有人在论坛中发布新帖子.我现在必须删除所有键"Forum::getThreads|$iForumId",无论限制和偏移是什么.
什么是解决这个问题的好方法?我真的宁愿不循环遍历每个可能的限制和偏移,直到找到不再匹配的东西.
谢谢.
caching ×1
diacritics ×1
javascript ×1
memcached ×1
pagination ×1
php ×1
regex ×1
replace ×1
unicode ×1