![]() |
1
1395
如果不想使用regex,请使用此选项。 |
![]() |
2
949
可以使用
注意使用
测试和结果( compare with this ):
注:
|
![]() |
3
222
更新日期:2016年8月23日 功能
测验
结果(php 7.0.9)(最快到最慢排序)
结果(php 5.3.29)(最快到最慢排序)
|
![]() |
4
130
到目前为止,所有的答案似乎都在做大量不必要的工作,
|
![]() |
5
45
学分 : |
![]() |
6
26
上面的regex函数,但是上面还建议了其他的调整:
|
![]() |
7
21
如果速度对你很重要,试试这个。(我相信这是最快的方法) 仅适用于字符串,如果$haystack只有1个字符
|
![]() |
8
20
这个问题已经有了许多答案,但在某些情况下,你可以解决一些比所有答案都简单的问题。 如果您要查找的字符串是已知的(硬编码),那么您可以使用正则表达式而不需要任何引号等。 检查字符串是否以“abc”开头:
以“abc”结尾:
在我的简单示例中,我想检查字符串是否以斜线结尾:
优点:由于它非常短和简单,因此不必定义函数(例如
但同样地,这不是每个案例的解决方案,只是这个非常具体的解决方案。 |
![]() |
9
16
以下是两个不引入临时字符串的函数,当指针很大时,它可能很有用:
|
![]() |
10
15
我知道这已经完成了,但你可能想看看 strncmp 因为它允许您将字符串的长度与之进行比较,所以:
|
![]() |
11
10
|
![]() |
12
8
最快的endsWith()解决方案:
基准:
基准结果:
|
![]() |
13
7
简单易懂的一行程序,没有正则表达式。 startsWith()直接向前。
endsWith()使用稍微花哨和缓慢的strRev():
|
![]() |
14
6
专注于startswith,如果您确定字符串不是空的,那么在比较之前,在第一个字符上添加一个测试,strlen等,会加快速度:
它以某种方式更快(20%-30%)。添加另一个char测试,比如$haystack 1==$needle 1似乎不会加快速度,甚至可能会减慢速度。
对于那些问“为什么不使用strpos?”称其他解决方案为“不必要的工作” strpos速度很快,但它不是这个工作的合适工具。 为了理解,这里有一个小的模拟例子:
电脑在里面做什么?
假设strlen不迭代整个字符串(但即使在这种情况下),这一点都不方便。 |
![]() |
15
6
我通常会去图书馆 underscore-php 这些天。
这个图书馆有很多其他方便的功能。 |
![]() |
16
6
这个 answer 通过 mpen 非常彻底,但不幸的是,提供的基准有一个非常重要和有害的监督。
因为针和干草堆中的每一个字节都是完全随机的,所以针和干草堆对在第一个字节上不同的概率是99.609375%,这意味着100000对中平均有99609对在第一个字节上不同。换言之,该基准严重偏向于
如果测试生成循环的实现方式如下:
基准测试结果的情况略有不同:
当然,这个基准可能仍然不是完全公正的,但是当给定部分匹配的指针时,它也会测试算法的效率。 |
![]() |
17
6
下面是接受答案的多字节安全版本,适用于UTF-8字符串:
|
![]() |
18
5
我希望下面的答案既有效又简单:
|
![]() |
19
4
这个
试验(试验)
此外,
|
![]() |
20
4
简而言之:
|
![]() |
21
3
这可能起作用
|
![]() |
22
3
为什么不下面的内容?
输出:
记住,
以下是结尾:
在这种情况下,不需要函数startswith()作为
将准确返回真或假。 奇怪的是,这里所有的疯狂功能都很简单。 |
![]() |
23
3
我想这样做
|
![]() |
24
3
只是一个建议:
另外一行比较字符串的第一个字符,可以使 错误案例返回 立即 因此,进行许多比较 更快(我测量时快了7倍)。在真实的情况下,你几乎不需要为这一行付出任何代价,所以我认为这是值得包括在内的。(此外,在实践中,当您为特定的起始块测试多个字符串时,大多数比较都会失败,因为在典型情况下,您正在寻找某些内容。) |
![]() |
25
2
根据詹姆斯·布莱克的回答,以下是它的结尾版本:
注意:我已经将if-else部分替换为james black的startswith函数,因为strncasecmp实际上是strncmp的不区分大小写版本。 |
![]() |
26
2
还可以使用正则表达式:
|
![]() |
27
2
以前的许多答案也同样有效。然而,这可能是尽可能短的,你可以让它做你想做的。你只需声明你希望它“返回真的”。所以我已经包含了返回布尔真/假和文本真/假的解决方案。
|
![]() |
28
1
这里是针对php 4的有效解决方案。如果在php 5上使用
|
![]() |
29
-1
|
![]() |
30
-3
不知道为什么这对人们来说如此困难。SUBSTR做得很好,而且效率很高,因为如果字符串不匹配,您不需要搜索整个字符串。 此外,由于我不检查整数值,而是比较字符串,因此不必担心严格的===大小写。然而,==是一个好习惯。
或者更优化。
|
![]() |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
![]() |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Manan Girdhar · 拆分字符串并仅在java中使用第二部分 2 年前 |
![]() |
AnxiousLuna · Python使用len()获取数组索引数 2 年前 |
![]() |
antonoyaro8 · 数据帧中每列上的Grepl 2 年前 |