当实体中有撇号时,不能使用array_search()


Cannot use array_search() when entity has Apostrophes in them

我遇到了一个问题,我有一个作为数组的公司列表,并且我正在使用array_search()从该数组中获取密钥以作为ID存储在数据库中。

这适用于我公司的所有产品,除了那些带有撇号的产品!我不知道array_search()是如何具体工作的,但我找不到网上发布的解决方案。

<?php
$array = array("pipefix", "Housing ltd","o'briens roofing","argos");
$search = "o'briens roofing";
$id = array_search($search, $array);
print_r($id);

这显然不是我的确切代码,但原理是一样的,我正在尝试为我的公司搜索数组,但如果其中有',它总是不会返回任何结果!对此有什么想法或解决方案吗?

我使用的Array是从另一个存储信息的数据库中提取的,并发布在我无法控制的API上。

我不把它存储在我的数据库中,我只存储[ID]用于管理和输入。

提取的数组在检索时是HTML编码的。

我使用JSONcUrl从API中提取了这个数组。这意味着当我第一次获得数组值时,Apostrophe已经转换为&apos;s

我认为使用htmlsecialchars_decode()可以恢复这种情况。感谢Ryan Vincent,他向我展示了问题是在使用cUrl拉动时创建的。

不幸的是,我无法更改这一点,因此在创建阵列时,我现在执行str_replace()并简单地删除&apos;s

这意味着一旦显示,它在技术上是不正确的。但由于这只被少数人使用,因此这样做比每次搜索都必须在后端进行更有效。