我有一個輸入欄位,它接受 2 個字符資料,例如
"? ? "," ??"," ?? ", "? ?"
我想將它們格式化為
"? ?"
它們之間只有一個空格,我需要它的正則運算式來實作 php 函式。
uj5u.com熱心網友回復:
你可以用普通的 PHP 代碼很容易地做到這一點。例如:
<?php
$input = ["? ? "," ??"," ?? ", "? ?"];
$output = [];
foreach ($input as $str) {
$output[] = trim(str_replace([' ', ' ', ' '], ' ', $str));
}
var_export($output);
這將最多用一個空格替換四個空格,并修剪結果以洗掉開頭或結尾的所有空格。輸出是:
array (
0 => '? ?',
1 => '??',
2 => '??',
3 => '? ?',
)
請參閱:PHP 小提琴
代碼的優點是易于理解。與正則運算式不同,您可以自己撰寫它。而且因為它很容易理解,所以不會做意想不到的事情,并且以后很容易改變它。
uj5u.com熱心網友回復:
試試這個:
/\s*([\p{Bengali}])(?:\s*)?([\p{Bengali}])\s*/u
https://www.phpliveregex.com/p/EKD
<?php
$str = "? ?" ;
echo preg_replace('/\s*([\p{Bengali}])(?:\s*)?([\p{Bengali}])\s*/u', '$1 $2', $str);
?>
輸出:
? ?
uj5u.com熱心網友回復:
這是我的解決方案
$serial = $row[0];
// remove all space
$serial = preg_replace('/\s /', '', $serial);
// add one space
$to = [
"? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?",
"? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?",
"? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?",
"? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?",
"? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?", "? ?"
];
$from = [
"??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
"??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "? ?", "? ?",
"??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
"??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
"? ?", "??", "??", "??", "??", "??", "??", "??", "??"
];
$serial = Str::replace($from, $to, $serial);
現在使用它,它也可以正常作業。
echo preg_replace('/\s*([\p{Bengali}])(?:\s*)?([\p{Bengali}])\s*/u', '$1 $2', $serial);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/476800.html
