How I can check if a string contais “x” but not “xy”
如何检查字符串是否包含"x"而不是"xy"?
所以我有这样的字符串:
1 2 3 4 5 6 7
| "5103564-XY",
"77-546-00X",
"292196232",
"5102200X",
"5102205",
"5102251-EP".
... |
我只需要结尾有字母"X"的数字。有人能帮助我在PHP中认识到这一点吗?
所以如果我尝试这个:
1 2
| $strings = array("5103564-AD","77-546-00D","292196232","5102200D","5102205","5102251-EP");
print_r(preg_grep('/d$/i', $strings)); |
所以输出是这样的:
1 2 3 4 5 6
| Array
(
[0] => 5103564-AD
[1] => 77-546-00D
[3] => 5102200D
) |
但这不是期望的结果。我只需要字符串,它只包含字母"d",而不需要字符串,它也包含"ad"或其他一些东西。我希望现在能更清楚一点,我需要什么。
- [可以] /手动/恩/ function.strpos.php(net /手动/恩/ function.strpos.php)
- 使用if (strpos($str, 'x') && strpos($str, 'xy') === false)
使用preg_grep仅查找列表中以d或d结尾的值(不带前导字母):
1 2
| $strings = array("5103564-AD","77-546-00D","292196232","5102200D","5102205","5102251-EP");
print_r(preg_grep('/[^a-z]d$/i', $strings)); |
输出:
1 2 3 4
| Array (
[1] => 77-546-00D
[3] => 5102200D
) |
3v4l.org上的演示
- 好吧,那是对的,但是如果我把"x"换成"d",因为现实中的例子中的"x"是"d"(字符串中的"x"是一样的,例如,"77-546-00x"是现实中的"77-546-00d"),如果我把它换成代码中的"x",那么答案是不对的,你能帮我吗?这里你能看到我的最新消息:3v4l.org/m1fin
- 答案在哪方面不正确?它列出了以d结尾的所有值…
- 是的,那是对的,但我只需要字符串,它只包含"d"而不是"da"、"xd"、"yd"或其他一些东西,只有结尾有字母"d",这很重要。;-)
- @我已经修改了我的答案和演示。我想这应该是你想要的。