【问题标题】:Find position first occurence of an array of strings in a string查找字符串数组中第一次出现的位置
【发布时间】:2010-12-02 00:00:36
【问题描述】:

PHP 有一个函数strpos() 用于查找字符串中给定值的第一个实例的位置。有没有办法用一个字符串数组的针来做到这一点?它会第一次出现:

$str = '1st and 3rd';

str_array_pos($str, array('st', 'nd', 'rd', 'th')) //would return 1 because of 'st'

【问题讨论】:

  • 您可以通过针阵列foreach,执行strpos() 并将结果保存在阵列中。您正在寻找所有结果中的min()

标签: php arrays string


【解决方案1】:

你可以自己写一个:

function str_array_pos($string, $array) {
  for ($i = 0, $n = count($array); $i < $n; $i++)
    if (($pos = strpos($string, $array[$i])) !== false)
      return $pos;
  return false;
}

顺便说一下,您的示例中的返回值应该是 0 而不是 1,因为数组索引从 0 开始。

【讨论】:

  • 这并不总是返回任何针线第一次出现的位置。
  • 我同意 svens 的观点,如果在正确元素之前的另一个数组元素也出现在字符串中,这仍然是不正确的。例如: str_array_pos('123', array('3', '2', '1')) 应该返回 2 而不是 0。
【解决方案2】:

array_search() 会这样做,用===false 测试。

【讨论】:

  • 再想一想,我认为这不适用于您的情况。 @Casablanca - 当你评论时注意到了,你的方法绝对是正确的,+1。
猜你喜欢
  • 2011-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 2017-11-12
  • 2012-10-17
  • 1970-01-01
相关资源
最近更新 更多