PHP - preg_match - 为匹配的元素分配任意值
假设我们有这个正则表达式:
preg_match('/\b(xbox|xbox360|360|pc|ps3|wii)\b/i' , $string, $matches);
现在,每当正则表达式与 ex 匹配时。 三个 xbox 方法 (xbox|xbox360|360) 之一,$matches
,应该只返回 XBOX
这可能继续在preg_match()
上下文还是我应该使用其他方法?
提前致谢。
编辑:
我实际上是这样做的:
$x = array('xbox360','xbox','360');
if( preg_match('/\b(xbox360|xbox|360|pc|ps3)\b/i', $s, $m ) ) {
$t = $m[0];
}
if ( in_array($t,$x) ) {
$t = 'XBOX';
}
我想知道是否还有其他方法!
assuming we have this regex:
preg_match('/\b(xbox|xbox360|360|pc|ps3|wii)\b/i' , $string, $matches);
now, whenever the regex match for ex. one of the three xbox methods (xbox|xbox360|360), the $matches
, should return just XBOX
is this possible continuing to work in the preg_match()
context or i should use some other method?
thank's in advance.
EDITED:
im actually doing it like this:
$x = array('xbox360','xbox','360');
if( preg_match('/\b(xbox360|xbox|360|pc|ps3)\b/i', $s, $m ) ) {
$t = $m[0];
}
if ( in_array($t,$x) ) {
$t = 'XBOX';
}
i'm wondering if there is another way!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你当前的代码对我来说看起来不错,如果你想要它更奇特一点,你可以
在匹配之前尝试命名子模式或 preg_replac'ing 东西:
在大输入上我猜你的方法将是最快的。一个小的改进是将
in_array
替换为基于哈希的查找:命名子模式:请参阅 http://www.php.net/manual/en/regexp.reference.subpatterns.php 和 http://php.net/manual/en/function.preg-match-all.php,示例 3
your current code looks ok to me, if you want it a bit fancier, you can try named subpatterns
or preg_replac'ing things before matching:
on big inputs i guess your method would be the fastest. A minor improvement would be to replace
in_array
with a hash-based lookup:named subpatterns: see http://www.php.net/manual/en/regexp.reference.subpatterns.php and http://php.net/manual/en/function.preg-match-all.php, example 3