我有一個UTF8編碼的字符串,在字符之間有許多shift +空格字符,我想用空格替換它們!如何做到這一點?用於shift +空格的正則表達式
0
A
回答
0
最簡單的方法是隻用一個半空間到的正則表達式:
$new = preg_replace("/ /", "-SPACE-", $yourstring);
前提是你的源文件UTF8編碼(因此,在正則表達式斜槓之間的事情是實際上是UTF8半空間),和你的PHP有完整的UTF8支持(我相信所有的安裝都是自5.0以後的某個時候開始的,但你永遠不知道......)。
如果你不能做到這一點,並需要UTF8十六進制表示,你可以做一個十六進制轉儲的文件(或最短的文件,你可以與字符在裏面),並找出代碼是什麼。你會看到類似C3 A0的東西,你會知道你可以使用/...\xc3\xa0.../
作爲正則表達式;請記住反斜槓可能需要被轉義。否則,你可以做這樣的事情 - 我使用另一個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";
?>
現在,如果你想用它變成一個替代正則表達式,你只需將其插入:
print preg_replace("/$search/", "(E)", "Déja vu");
輸出 「d(E)JA似曾相識」 我的系統上。
備註:你是肯定你需要一個正則表達式嗎? str_replace
可能更快,並在所有不需要的十六進制代碼:
$new = str_replace(" ", " ", $old); // The first space is really a "half space"
UPDATE:你能做到以上直接在MySQL太(使DB的備份第一;-)):
UPDATE table SET field = REPLACE(field, '<A HALF SPACE HERE>', ' ');
(您可能需要首先發出SET NAMES UTF8;
,以確定庫字符編碼)。
相關問題
- 1. 正則表達式空格
- 2. 忽略空格的正則表達式
- 3. 用正則表達式去掉空格
- 4. 正則表達式用空格
- 5. 正則表達式用空格
- 6. 蟒蛇正則表達式用空格
- 7. 正則表達式中的空格
- 8. 避免空格的正則表達式
- 9. 正則表達式 - 替換空格
- 10. 用於排除雙空格的正則表達式
- 11. 用於檢查重複空格字符的正則表達式
- 12. 正則表達式忽略空格
- 13. Java正則表達式:newline +空格
- 14. 正則表達式刪除空格
- 15. 正則表達式來不帶空格
- 16. 對於沒有空格的HTML模式正則表達式
- 17. 正則表達式來檢查空格
- 18. VBScript - 正則表達式替換空格
- 19. 正則表達式 - 匹配空格
- 20. ANT刪除空格正則表達式
- 21. 空格/空格的特定字詞的正則表達式
- 22. 正則表達式僅匹配空格
- 23. 正則表達式與空格分割
- 24. 正則表達式 - 僅替換空格
- 25. 正則表達式 - 無空格
- 26. 正則表達式格式
- 27. PCRE正則表達式空格
- 28. 正則表達式不允許空格
- 29. 正則表達式刪除空格
- 30. 正則表達式空格字符
你的意思是標籤?... – Shoe
你可以用'preg_replace('〜\ h +〜','',$ string)替換所有的空白字符;' –
什麼是「shift + space」? –