【发布时间】:2020-09-06 12:06:13
【问题描述】:
我将讨论我的问题以及它是如何解决的 我的数据库sql
-- phpMyAdmin SQL Dump
-- version 4.7.9
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Sep 07, 2020 at 07:54 AM
-- Server version: 10.1.31-MariaDB
-- PHP Version: 5.6.34
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
CREATE TABLE `ddrugs` (
`id` int(11) NOT NULL,
`code` varchar(20) NOT NULL,
`multicodes` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `ddrugs` (`id`, `code`, `multicodes`) VALUES
(13916, '10013916', '6221075051207,10013916,6221075050750, 6221075051207');
ALTER TABLE `ddrugs`
ADD PRIMARY KEY (`id`);
ALTER TABLE `ddrugs`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13917;
COMMIT;
我的数据库中有包含多码的项目
在向项目添加额外代码之前,我应该检查是否存在
当我检查它时没有找到但实际上它找到了,检查控制台后我在代码后找到‏,这是在编辑期间生成并防止匹配
主要问题来自对utf8的编码查询结果以及这个函数convert_ascii解决的问题,
第二个错误是我尝试从整个提交的多代码中替换 ‏ 而无需迭代,但这不是麻烦的主要原因
我的 php 代码
function convert_ascii($string)
{
// Replace Single Curly Quotes
$search[] = chr(226).chr(128).chr(152);
$replace[] = "'";
$search[] = chr(226).chr(128).chr(153);
$replace[] = "'";
// Replace Smart Double Curly Quotes
$search[] = chr(226).chr(128).chr(156);
$replace[] = '"';
$search[] = chr(226).chr(128).chr(157);
$replace[] = '"';
// Replace En Dash
$search[] = chr(226).chr(128).chr(147);
$replace[] = '--';
// Replace Em Dash
$search[] = chr(226).chr(128).chr(148);
$replace[] = '---';
// Replace Bullet
$search[] = chr(226).chr(128).chr(162);
$replace[] = '*';
// Replace Middle Dot
$search[] = chr(194).chr(183);
$replace[] = '*';
// Apply Replacements
$string = str_replace($search, $replace, $string);
// Remove any non-ASCII Characters
$string = preg_replace("/[^\x01-\x7F]/","", $string);
return $string;
}
echo "<pre>";
error_reporting(1);
$mysqli = new mysqli('localhost', 'root', '', 'egpharmacy');
$sql = "SELECT * FROM `ddrugs` WHERE `id` = 13916;";
$results = $mysqli -> query($sql);
$result = $results->fetch_object();
echo "<input type='text' value='$result->multicodes' style='width:600px;' /><br>";
$result->multicodes = array_unique(explode(',', $result->multicodes) );
$array = $result->multicodes ;
$array2 = [];
foreach($result->multicodes as $key => $val){
$val = trim("$val") ;
$val = str_replace('‏' , '' , $val );
$val = str_replace('?' , '' , $val );
$val = convert_ascii($val) ;
echo var_dump((($val))) .'<br>';
if(!in_array( $val , $array2 )){
array_push($array2 , $val );
}
}
print_r($array2);
我附上照片以显示它在控制台中的显示方式
【问题讨论】:
-
你考虑过使用正则表达式吗?
-
使用
str_replace()删除有什么问题? -
这能回答你的问题吗? How to remove part of a string?
-
显示您的代码,
&、r、l和m的菱形更多的是一个问题,然后简单地删除它。我过去已经解决了这个问题,也许你感兴趣:stackoverflow.com/questions/21322702/… -
我分享我的代码以及它是如何解决的,感谢您的帮助
标签: php