如何替换字符串中的第n个匹配项

现在

我需要一个简单快速的解决方案来替换字符串中的第n个出现的位置(占位符)。

例如,应将sql查询中的第n个问号替换为提供的值。

$subject = "SELECT uid FROM users WHERE uid = ? or username = ?";

因此,我需要像这样的函数str_replace_nth($seach, $replace, $subject, $nth),对于第二个问号,它应称为str_replace_nth("?", $username, $subject, 2);

有任何想法吗?

PS:请不要建议我使用PDO,因为我正在使用FDO(Facebook数据对象)一个具有类似于PDO的接口的库,但用于FQL。

重要通知!我发现这种方法不好,因为在第一次替换之后,查询被修改并且索引丢失。(当您在深夜编程时会出现错误的方法:()因此,正如@GolezTrol在评论中提到的,最好一次全部替换掉​​。

位工作

这是您要求的功能:

$subject = "SELECT uid FROM users WHERE uid = ? or username = ?";

function str_replace_nth($search, $replace, $subject, $nth)
{
    $found = preg_match_all('/'.preg_quote($search).'/', $subject, $matches, PREG_OFFSET_CAPTURE);
    if (false !== $found && $found > $nth) {
        return substr_replace($subject, $replace, $matches[0][$nth][1], strlen($search));
    }
    return $subject;
}

echo str_replace_nth('?', 'username', $subject, 1);

注意:$nth是从零开始的索引!

但我建议使用类似以下的内容替换占位符:

$subject = "SELECT uid FROM users WHERE uid = ? or username = ?";

$args = array('1', 'steve');
echo vsprintf(str_replace('?', '%s', $subject), $args);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何替换字符串中的第n个匹配项

来自分类Dev

替换字符串的第1到第n个匹配项。javascript

来自分类Dev

替换字符串的第1到第n个匹配项。javascript

来自分类Dev

如何使用正则表达式匹配字符串中的第n个出现

来自分类Dev

如何替换字符串中的匹配项并索引每个匹配项

来自分类Dev

用另一个列表中的字符串项匹配并替换列表中的字符串项

来自分类Dev

Excel - 从相应的数据中获取第 2 个或第 n 个匹配的字符串

来自分类Dev

正则表达式构建字符串,直到遇到第N个匹配项

来自分类Dev

正则表达式构建字符串,直到遇到第N个匹配项

来自分类Dev

如何在两个文件中匹配字符串并替换字符串?

来自分类Dev

如何用另一个替换字符串的第n个字符

来自分类Dev

用字典中的第一个匹配项替换字符串

来自分类Dev

如何用新字符替换字符串中的第 n 个字符?

来自分类Dev

如何使用sed替换文件中每一行的字符串前的第n个空格

来自分类Dev

如何替换字符串的所有匹配项?

来自分类Dev

替换字符串/文本中单词的“从第n个到最后一个”出现

来自分类Dev

如何使用字符串包替换R中匹配项中的特定组?

来自分类Dev

如何在obj-C中用正则表达式替换字符串中第N个出现的字符串

来自分类Dev

如何替换字符串中子字符串的特定位置并忽略Java中不完整的匹配项?

来自分类Dev

如何替换字符串中第n个字符?

来自分类Dev

如何在r的列中替换字符串的第n个字符

来自分类Dev

我如何从字符串中替换每个第 n 个字符 x

来自分类Dev

如何在正则表达式匹配项中替换字符串

来自分类Dev

如何用arraylist中的多个匹配项替换字符串?

来自分类Dev

Excel VBA替换字符串中的第n个单词

来自分类Dev

用给定的字符串替换 vim 中的第 n 个模式

来自分类Dev

匹配Perl中第n个可能的最长字符串

来自分类Dev

匹配包含十六进制数字的字符串中的第 n 个出现次数

来自分类Dev

如何将一个文件中的字符串替换为另一个文件中的匹配项?

Related 相关文章

  1. 1

    如何替换字符串中的第n个匹配项

  2. 2

    替换字符串的第1到第n个匹配项。javascript

  3. 3

    替换字符串的第1到第n个匹配项。javascript

  4. 4

    如何使用正则表达式匹配字符串中的第n个出现

  5. 5

    如何替换字符串中的匹配项并索引每个匹配项

  6. 6

    用另一个列表中的字符串项匹配并替换列表中的字符串项

  7. 7

    Excel - 从相应的数据中获取第 2 个或第 n 个匹配的字符串

  8. 8

    正则表达式构建字符串,直到遇到第N个匹配项

  9. 9

    正则表达式构建字符串,直到遇到第N个匹配项

  10. 10

    如何在两个文件中匹配字符串并替换字符串?

  11. 11

    如何用另一个替换字符串的第n个字符

  12. 12

    用字典中的第一个匹配项替换字符串

  13. 13

    如何用新字符替换字符串中的第 n 个字符?

  14. 14

    如何使用sed替换文件中每一行的字符串前的第n个空格

  15. 15

    如何替换字符串的所有匹配项?

  16. 16

    替换字符串/文本中单词的“从第n个到最后一个”出现

  17. 17

    如何使用字符串包替换R中匹配项中的特定组?

  18. 18

    如何在obj-C中用正则表达式替换字符串中第N个出现的字符串

  19. 19

    如何替换字符串中子字符串的特定位置并忽略Java中不完整的匹配项?

  20. 20

    如何替换字符串中第n个字符?

  21. 21

    如何在r的列中替换字符串的第n个字符

  22. 22

    我如何从字符串中替换每个第 n 个字符 x

  23. 23

    如何在正则表达式匹配项中替换字符串

  24. 24

    如何用arraylist中的多个匹配项替换字符串?

  25. 25

    Excel VBA替换字符串中的第n个单词

  26. 26

    用给定的字符串替换 vim 中的第 n 个模式

  27. 27

    匹配Perl中第n个可能的最长字符串

  28. 28

    匹配包含十六进制数字的字符串中的第 n 个出现次数

  29. 29

    如何将一个文件中的字符串替换为另一个文件中的匹配项?

热门标签

归档