【问题标题】:PHP preg_replace() upper and lowercase differencePHP preg_replace() 大小写区别
【发布时间】:2014-08-29 18:23:39
【问题描述】:

我有一个 PHP/Ajax 搜索功能,它返回包含在文本框中输入的字符的所有国家/地区。所有这些国家都被列出,并且给定的字符在列表中它的名字的国家内被标记为粗体。

示例 文本框中给出的字符:“Af” 哪个返回 Af 加尼斯坦和南 Af rica - 中间没有空格

现在数据库中的所有国家名称当然都以大写字母开头。但是

preg_replace()

找不到大小写字母的区别。因此,当我在文本框中输入“a”时,它将返回 Afgh a nist a n 请注意第一个大写“A”未设为 bold

这是我正在使用的代码

$display_name = preg_replace("/" . $search_string . "/", "<b>" . $search_string . "</b>", $result['Country_Name']);
$display_url = '';

$output = str_replace('NameReplace', $display_name, $HTML);
$output = str_replace('UrlReplace', $display_url, $output);
echo($output);

我可以“修复”这个问题,将“/i”修饰符添加到 preg_replace() 根据 PHP.net,它将执行以下操作:

i (PCRE_CASELESS) 如果设置了此修饰符,则模式中的字母匹配大小写字母。

这将根据文本框内的字符将国家名称内的粗体字符变为小写或大写

示例: 文本框中给出的字符:“A”将返回“A fgh A nist A n” 而 "a" 将再次返回 "a fgh a nist a n" 请忽略空格。

当我输入:“a”时,我怎样才能做到这一点 它将返回“A fgh a nist a n”?

谢谢

【问题讨论】:

    标签: php preg-replace uppercase lowercase modifier


    【解决方案1】:

    改变这个:

    $display_name = preg_replace("/" . $search_string . "/", "<b>" . $search_string . "</b>", $result['Country_Name']);
    

    到这里:

    $display_name = preg_replace("/(" . $search_string . ")/i", '<b>$1</b>', $result['Country_Name']);
    

    【讨论】:

    • 再次更新。现在呢?
    • 请再试一次。必须有单引号而不是双引号。我的错。
    • 好的...我不知道它在技术上到底是如何工作的,但我会尽力解释它...您在表达式中 () 中输入的所有内容都可以访问在 preg_replace(parameter1, parameter2, parameter3) 的第二个参数中,$1, $2... 示例:preg_replace("@(a)(b)(c)@i", '$3$1$2', $string) 将返回 cab。但请注意,$3$1$2 必须在单引号 (' ') 内!如果将它们放在双引号 (" ") 内,它就可以工作。第一个() 里面的内容可以在第二个参数$1 中访问,第二个() 里面的内容是$2,依此类推...
    • @Krijn van der Burg 查看此链接:tutorialspoint.com/php/php_regular_expression.htm 了解更多关于 php 中的正则表达式(正则表达式)的信息。
    • 通过在正则表达式中使用括号,您可以创建一个子模式,稍后您可以使用所谓的反向引用来访问它。反向引用通过使用取决于定义子模式的顺序的数字寻址来指向该子模式。 $0(或\\0)指的是整个模式(整个正则表达式)。只是想我会在讨论中添加一些技术术语,以便您可以轻松查找它们以获取更多信息:)
    【解决方案2】:

    试试这个:

    echo preg_replace("/a/i", "<b>\1</b>", "Afghanistan");
    

    HTML 中的输出

    A fgh a nist a n

    【讨论】:

    • 感谢您尝试提供帮助,但有人打败了您并解决了我的问题,这不是我想要的。不过非常感谢!
    猜你喜欢
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 2015-03-07
    • 2011-04-13
    相关资源
    最近更新 更多