preg_match PHP 建议
我还不太擅长 preg_match,我想知道是否有人可以帮助我。 我有一个值数组,例如 array("black*", "blue", "red", "grey*")
我需要使用 *
查找值最后然后返回它之前的单词。
我相信 preg_match() 是最好的方法,但我愿意接受建议。
提前致谢!
I'm not too great at preg_match yet and I was wondering if someone could give me a hand.
I have an array of values e.g. array("black*", "blue", "red", "grey*")
I need to find the values with a *
at the end then return the word before it.
I believe preg_match() is the best way of doing it but I'm open to suggestions.
Thanks in advanced!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您必须使用正则表达式...
CodePad。
...但是你最好不要使用正则表达式并使用类似...
CodePad 。
如果您只想返回尾随有
*
的单词,请先尝试这样的操作...键盘。
这样做的唯一缺点(如评论中提到的)是 PHP 将在数组上迭代两次。如果您愿意,您可以简单地使用
foreach
循环在一个循环中完成这两项操作。另外,值得一提的是,匿名函数是 PHP 5.3 中的一个东西。您仍然可以使用大部分代码,只需将函数分成它们自己的命名函数并传递对它们的引用即可。
If you must use a regex...
CodePad.
...but you're probably better off not using regex and using something like...
CodePad.
If you want to return only the words which have a trailing
*
, try something like this first...CodePad.
The only disadvantage with this (as mentioned in the comments) is PHP will iterate twice over the array. You can simply use a
foreach
loop to do both of these in one loop if you wish.Also, it is worth mentioning anonymous functions are a PHP 5.3 thing. You can still most of this code, just separate the functions into their own named functions and pass a reference to them.
如果你总是有一个这样的数组(即没有复杂的字符串,只有单词*),你真的不应该使用正则表达式,这是一种矫枉过正。
使用字符串函数,例如用于搜索的 strpos 和用于删除 * 的 str_replace 或 rtrim。
— 来自 str_replace 手册
If you always have an array like that (i.e. no complex strings, just word*), you really shouldn't use regular expressions, it's an overkill.
Use string functions, like strpos for searching and str_replace or rtrim for removing *.
— from str_replace manual
不需要为此使用 preg_match - 对字符串进行简单的字符查找即可:
Don't need to use preg_match for this - simple char lookup on the string will work: