Php 用于shift和x2B的正则表达式;空间
我有一个UTF8编码的字符串,在字符之间有许多shift+空格字符,我想用空格替换它们!如何做到这一点?最简单的方法是在regexp中使用半个空格:Php 用于shift和x2B的正则表达式;空间,php,Php,我有一个UTF8编码的字符串,在字符之间有许多shift+空格字符,我想用空格替换它们!如何做到这一点?最简单的方法是在regexp中使用半个空格: $new = preg_replace("/ /", "-SPACE-", $yourstring); 如果您的源文件是UTF8编码的(因此regexp中斜杠之间实际上是一个UTF8半空间),和您的PHP完全支持UTF8(我相信从5.0以后的某个时候起,所有安装都支持UTF8,但您永远不知道……) 如果您不能这样做,并且需要UTF8十六进制表示,
$new = preg_replace("/ /", "-SPACE-", $yourstring);
如果您的源文件是UTF8编码的(因此regexp中斜杠之间实际上是一个UTF8半空间),和您的PHP完全支持UTF8(我相信从5.0以后的某个时候起,所有安装都支持UTF8,但您永远不知道……)
如果您不能这样做,并且需要UTF8十六进制表示,您可以对文件进行十六进制转储(或者使用包含字符的最短文件),并找出代码。您将看到类似于c3a0的内容,您将知道可以使用/…\xc3\xa0…/
作为regexp;请记住,反斜杠可能需要转义
否则,您可以这样做-我使用另一个UTF8字符,因为我不知道编辑器使用什么作为“半空间”-您只需使用这一字符准备一个字符串并在PHP中解码即可
<?php
$string = "é"; // THE SOURCE FILE MUST BE UTF8 CODED, OF COURSE...
$hex = bin2hex($string);
$seq = str_split($hex, 2);
$search = "\\x".implode("\\x", $seq);
print "The sequence is $search .\n";
?>
在我的系统上输出“D(E)ja vu”
注意:您确定需要一个regexp吗<代码>str_replace可能更快,而且根本不需要十六进制代码:
$new = str_replace(" ", " ", $old); // The first space is really a "half space"
更新:您也可以在MySQL中直接执行上述操作(首先备份数据库;-):
updatetable SET字段=替换(字段“”,“”);
(您可能需要首先发出一个
SET NAMES UTF8;
,以确定库字符编码)。您可以使用preg\u replace(“~\h+~”,“,$string”)替换所有空白字符代码>@OliCharlesworth,shift+空格输出一半-space@Glavić,你的正则表达式与其他东西匹配!!Shift+空格完全取决于您使用的编辑器。找出它正在创建的代码,然后替换它。@DCoder,那个么我怎样才能找出代码呢?:D
$new = str_replace(" ", " ", $old); // The first space is really a "half space"
UPDATE table SET field = REPLACE(field, '<A HALF SPACE HERE>', ' ');