PHP preg_替换数据库插入失败的非字母数字结果

PHP preg_替换数据库插入失败的非字母数字结果,php,mysql,regex,preg-replace,Php,Mysql,Regex,Preg Replace,我在下面的meta标记上使用了下面的代码,这导致MySQL中的字符串值不正确 PHP preg_替换代码 $content = $link->getAttribute('content'); $content = preg_replace('/[^a-zA-Z\d\s\.]/', '', $content); $content的内容 FGC ferrocarrils de la generalitat de catalunya tren ferrocarril funicular

我在下面的meta标记上使用了下面的代码,这导致MySQL中的字符串值不正确

PHP preg_替换代码

 $content = $link->getAttribute('content');
 $content = preg_replace('/[^a-zA-Z\d\s\.]/', '', $content);
$content的内容

 FGC ferrocarrils de la generalitat de catalunya tren ferrocarril funicular cremallera aeri telefric teleferic bitllets fgc bitllets integrats bitllets turstics bitllets turistics turisme i muntanya tarifes horaris abonaments pl�nol xarxa planol xarxa lnia barcelonavalls linia barcelonavalles lnia LlobregatAnoia linia LlobregatAnoia  Metro del Valls Metro del Valles Metro del Baix Llobregat lnies urbanes bcn linies urbanes bcn lnies suburbanes bcn linies suburbanes bcn barcelonasabadell barcelonaterrassa barcelonaigualada barcelonamanresa barcelonamartorell montserrat nria nuria vall de nria vall de nuria la Molina lleidala pobla gelida olesaesparraguera tren del ciment tren de lensenyament tren de vapor estacions accessibles l6 l7 s1 s2 s5 s55 l8 s33 s4 s8 r5 r6 transporttransport escolar projectes educatius tren de lensenyament programes pedaggics activitats educatives activitats pedaggiques histria fgc trens vapor cremallera funicular locomotora vagons estacions transports mobilitat pblic Rub Martorell Montserrat Vallvidrera Catalunya Turisme Via neu esqu snowboard esports dhivern bicicleta Mountain Bike accessibilitat Transport sostenible PMR Mobilitat reduda
元标记

 <meta name="keywords" content="FGC, ferrocarrils de la generalitat de catalunya, tren, ferrocarril, funicular, cremallera, aeri, telefèric, teleferic, bitllets fgc, bitllets integrats, bitllets turístics, bitllets turistics, turisme i muntanya, tarifes, horaris, abonaments, plànol xarxa, planol xarxa, línia barcelona-vallès, linia barcelona-valles, línia Llobregat-Anoia, linia Llobregat-Anoia,  Metro del Vallès, Metro del Valles, Metro del Baix Llobregat, línies urbanes bcn, linies urbanes bcn, línies suburbanes bcn, linies suburbanes bcn, barcelona-sabadell, barcelona-terrassa, barcelona-igualada, barcelona-manresa, barcelona-martorell, montserrat, núria, nuria, vall de núria, vall de nuria, la Molina, lleida-la pobla, gelida, olesa-esparraguera, tren del ciment, tren de l'ensenyament, tren de vapor, estacions accessibles, l6, l7, s1, s2, s5, s55, l8, s33, s4, s8, r5, r6, transport,transport escolar, projectes educatius, tren de l'ensenyament, programes pedagògics, activitats educatives, activitats pedagògiques, història fgc, trens, vapor, cremallera, funicular, locomotora, vagons, estacions, transports, mobilitat, públic, Rubí, Martorell, Montserrat, Vallvidrera, Catalunya, Turisme, Via, neu, esquí, snowboard, esports d'hivern, bicicleta, Mountain Bike, accessibilitat, Transport sostenible, PMR, Mobilitat reduïda"/>
这是我的数据库详细信息

 +------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
 | Name                   | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation       | Checksum | Create_options | Comment |
 +------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
 | domains_software_metas | InnoDB |      10 | Dynamic    | 2677 |            116 |      311296 |               0 |            0 |   2097152 |           2678 | 2017-10-15 10:49:07 | 2017-10-15 11:26:32 | NULL       | utf8_general_ci |     NULL |                |         |
 +------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+

关于如何让preg_replace替换那个讨厌的字符,你有什么想法吗?

你的问题肯定在你的内容字符串的这一部分
plánol xarxa

为什么mySql不能正确处理这个问题,我不确定。PHP的DOM*类希望使用UTF8编码,而根据错误消息中的
'\xA0nol x...
文本,可能没有UTF8编码

加载HTML时,请先尝试使用
utf8\u decode()
。这将把ISO-8859-1转换为UTF-8

$document = new DOMDocument();
$html = getHtml(); // load your html code
$document->loadHTML(utf8_decode($html));
$link = findLink($document); // your code to find the link
$content = $link->getAttribute('content');
$content = preg_replace('/[^a-zA-Z\d\s\.]/', '', $content);

我建议您将表格转换为UTF8,以便支持所有字符

不过要回答这个问题,根据
$content
的输出,
pl�nol
,它看起来像是
preg\u replace
正在将字符串处理为单字节字符。要使其作为unicode处理,请添加
u
修饰符

$content = preg_replace('/[^a-zA-Z\d\s\.]/u', '', $content);

你能不能也显示执行插入的行?提供数据库信息:MySQL版本、数据库/表排序规则等。我喜欢转换为UTF8的建议,我现在正在研究,我也在研究如何获得查询,brb这是有效的!=]请参阅中的“黑钻石”
$content = preg_replace('/[^a-zA-Z\d\s\.]/u', '', $content);