gpt4 book ai didi

php - 返回第一个字符为字母且相当于重音字符的行

转载 作者:行者123 更新时间:2023-11-29 08:24:25 25 4
gpt4 key购买 nike

我正在寻找一个查询,该查询将返回名称的第一个字母字符以变量中给定的字母开头的行。它还应该包括非重音字符的等效字符。

以mySQL中的表为例:

id    name
--------------------------
25 Como yo te quiero
57 Me quieres
34 Ahora
45 África
568 No me mires
78 ¿A que?
89 Y sin embargo
5 ¡... A que no!
34 ...A la madre
85 Por que
51 A mi manera

PHP 文件:

// alpha letter to search in the name
$char = $_GET['char'];

// layout of the query
$sql = 'SELECT song_id, name FROM song WHERE song.name starts with ?';

$conn = connect('read');
$stmt = $conn->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param('s', $char);
$stmt->execute();
$stmt->bind_result($songid, $name);
$stmt->fetch();
$stmt->free_result();
$stmt->close();
$conn->close();

如果 $char 等于“a”,则结果集应返回名称中第一个字母以 aA 开头的所有行áÁ 等...

输出:

34    Ahora
45 África
78 ¿A que?
5 ¡... A que no!
34 ...A la madre
51 A mi manera

如果 $char 等于“e”,则结果集应返回名称中第一个字母以 eE 开头的所有行éÉ 等...

如果 $char 等于“p”,则结果集应返回名称中第一个字母以 p 开头的所有行

等等...

查询是什么?我是否需要某种对话表来告诉 PHP 哪些字符相当于 a、e、o 等...?

最佳答案

此查询适用于我的测试场景:

SELECT `name` FROM `test` WHERE `name` REGEXP '^[^\x00-\x7F]*a'

或者创建一个数组,例如:

$replacements = array(
'a' => array('a','Á')
,'b'...//etc
);

然后使用 implode('|',$replacements[$char]) 创建如下语句:

SELECT `name` FROM `test` WHERE `name` REGEXP '^[^\x00-\x7F]*(a|Á)'

^[^\x00-\x7F]* 正在查找开头的所有非 ASCII 字符(然后是 a)

SQL Fiddle

关于php - 返回第一个字符为字母且相当于重音字符的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18362332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com