簡體   English   中英

正則表達式替換 PHP 中的特殊字符?

[英]Regex to replace a special character in PHP?

我有特殊字符§ 我想替換多次出現§§ 以下正則表達式在Regex 101上運行良好。

$file_data = file_get_contents($file_name);
$file_data = preg_replace('/\§+/g', '§',$file_data);

它變了

§§§§§§§§§這款免費的 3D 機器人游戲可以重新定義孩子們學習編碼的方式Digital Trends 讓孩子們編碼很難。 直到最近,它主要是......

§這款免費的 3D 機器人游戲可以重新定義孩子們學習編碼的方式數字趨勢讓孩子們編寫代碼很難。 直到最近,它主要是......

但是,我上傳后它在服務器上不起作用。 這是 PHP 的var_dump($file_data)

§§§§§§§§§§§§ 這款免費的 3D 機器人游戲可以重新定義孩子們學習編碼的方式Digital Trends 讓孩子們編碼很難。 直到最近,它主要是......

因此,在var_dump每個§之前似乎都有一個額外的字符Â 當作為 HTML 回顯時,額外的字符Â不會顯示在網頁上。 它只是在普通的 PHP var_dump期間出現。 如何在 PHP 中使用正則表達式替換多次出現的§

您需要設置u (utf-8) 修飾符:

從 perlre 文檔:

/u表示在模式匹配時使用 Unicode 規則。 在 ASCII 平台上,這意味着 128 和 255 之間的代碼點采用它們的 Latin-1 (ISO-8859-1) 含義(與 Unicode 相同)......

$output = preg_replace('/§+/u', '§', $input);
                         // ^ 
$str="§§§§§§§§§This free 3D robot game could redefine how kids learn to codeDigital Trends It's hard to get kids to code. Up until very recently, it was largely ....";
$pttn='@\§{2,}@um';
echo preg_replace( $pttn,'§',$str );

/* will output */
/*
   §This free 3D robot game could redefine how kids learn to codeDigital Trends It's hard to get kids to code. Up until very recently, it was largely .... 
*/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM