我有一个阿拉伯文本表格。我想删除重复的行。从阿拉伯语的符号来看:َ ِ ُ
我的表格: 词汇
+----+----------+--------------------------------+
| id | word | mean |
--------------------------------------------------
| 1 | سِلام | xxx |
--------------------------------------------------
| 2 | سَلام | xxx |
--------------------------------------------------
| 3 | سلام | xxx |
--------------------------------------------------
| 4 | سلام | xxx |
+------------------------------------------------+
现在我想要这张 table :
+----+----------+--------------------------------+
| id | word | mean |
--------------------------------------------------
| 1 | سِلام | xxx |
--------------------------------------------------
| 2 | سَلام | xxx |
--------------------------------------------------
| 3 | سلام | xxx |
+------------------------------------------------+
我该怎么做?!
我的尝试:
$result = mysql_query( "SELECT * FROM vocabulary where");
while($end = mysql_fetch_assoc($result)){
$word = $end["word"];
$mean = $end["mean"];
$id = $end["id"];
$result2 = mysql_query( "SELECT * FROM vocabulary where word='$word' AND mean='$mean'");
$TotalResults = mysql_num_rows($result2);
if($TotalResults>1){
mysql_query( "DELETE FROM vocabulary WHERE id='$id'");
}
摘要:如何使 MySQL 对阿拉伯符号敏感?
最佳答案
有多种方法可以实现这一目标。
1-您可以从数据库中选择行,循环遍历它们并将“单词”标题保存在数组中,并且在循环的每次迭代中,您可以检查是否有类似的值 in_array( )
。如果该值存在,那么您可以将该 id 保存在另一个数组中,然后使用这些 id 从数据库中删除。
2- 提取 id 的另一种方法是使用类似于以下的查询:
按标题从表组中选择计数(*)、id
然后您可以循环遍历结果并删除 count 大于 1 的行(使用 id)。
这两种方法(以及其他方法)的基本概念是您只需匹配字符串即可。字母上的发音会改变实际的字符串,因此“Sָَ”不等于“Ŏֹ”。
顺便说一句,有一个很棒的阿拉伯语 PHP 库,您可以使用它进行各种与阿拉伯语相关的字符串操作: PHP and Arabic Language .
这种方式只会删除一个重复项。
还有其他几种方法可以做到这一点,这完全取决于您拥有的数据集的大小,以及删除这些重复项是一次性的事情还是频繁的事情,因为您必须牢记性能。
关于php - 如何考虑阿拉伯语语音删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30401571/