Php 用于shift和x2B的正则表达式;空间

Php 用于shift和x2B的正则表达式;空间,php,Php,我有一个UTF8编码的字符串,在字符之间有许多shift+空格字符,我想用空格替换它们!如何做到这一点?最简单的方法是在regexp中使用半个空格: $new = preg_replace("/ /", "-SPACE-", $yourstring); 如果您的源文件是UTF8编码的(因此regexp中斜杠之间实际上是一个UTF8半空间),和您的PHP完全支持UTF8(我相信从5.0以后的某个时候起,所有安装都支持UTF8,但您永远不知道……) 如果您不能这样做,并且需要UTF8十六进制表示,

我有一个UTF8编码的字符串,在字符之间有许多shift+空格字符,我想用空格替换它们!如何做到这一点?

最简单的方法是在regexp中使用半个空格:

$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>', ' ');