gpt4 book ai didi

php - 我怎样才能 preg_replace 像 'Prêt-à-porter' 这样的特殊字符?

转载 作者:行者123 更新时间:2023-12-04 15:32:33 27 4
gpt4 key购买 nike

在这个论坛和一般的网络上有很多关于这个的问题。但我不只是明白。

这是我的代码:

function updateGuideKeywords($dal)
{
$pattern = "/[^a-zA-Z-êàé]/";
$keywords = preg_replace($pattern, '', $_POST['keywords']);
echo json_encode($keywords);
}

现在,输入是 Prêt-à-porter,输出是 "Pr\u00eat-\u00e0-porter"

为什么我得到 '\u00e' ?

我如何更改我的模式以包含字符 êàé

编辑
嗯...因为它看起来像是一个 unicode/字符问题,我可能会寻求我在 this page 上找到的解决方案.

这里他们建议做这样的事情:

$chain="prêt-à-porter";

$pattern = array("'é'", "'è'", "'ë'", "'ê'", "'É'", "'È'", "'Ë'", "'Ê'", "'á'", "'à'", "'ä'", "'â'", "'å'", "'Á'", "'À'", "'Ä'", "'Â'", "'Å'", "'ó'", "'ò'", "'ö'", "'ô'", "'Ó'", "'Ò'", "'Ö'", "'Ô'", "'í'", "'ì'", "'ï'", "'î'", "'Í'", "'Ì'", "'Ï'", "'Î'", "'ú'", "'ù'", "'ü'", "'û'", "'Ú'", "'Ù'", "'Ü'", "'Û'", "'ý'", "'ÿ'", "'Ý'", "'ø'", "'Ø'", "'œ'", "'Œ'", "'Æ'", "'ç'", "'Ç'");

$replace = array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E', 'a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'A', 'o', 'o', 'o', 'o', 'O', 'O', 'O', 'O', 'i', 'i', 'i', 'I', 'I', 'I', 'I', 'I', 'u', 'u', 'u', 'u', 'U', 'U', 'U', 'U', 'y', 'y', 'Y', 'o', 'O', 'a', 'A', 'A', 'c', 'C');

$chain = preg_replace($pattern, $replace, $chain);

编辑 2
到目前为止,这是我的解决方案:

function updateGuideKeywords()
{
//First we replace characters with accents
$pattern = array("'é'", "'è'", "'ë'", "'ê'", "'É'", "'È'", "'Ë'", "'Ê'", "'á'", "'à'", "'ä'", "'â'", "'å'", "'Á'", "'À'", "'Ä'", "'Â'", "'Å'", "'ó'", "'ò'", "'ö'", "'ô'", "'Ó'", "'Ò'", "'Ö'", "'Ô'", "'í'", "'ì'", "'ï'", "'î'", "'Í'", "'Ì'", "'Ï'", "'Î'", "'ú'", "'ù'", "'ü'", "'û'", "'Ú'", "'Ù'", "'Ü'", "'Û'", "'ý'", "'ÿ'", "'Ý'", "'ø'", "'Ø'", "'œ'", "'Œ'", "'Æ'", "'ç'", "'Ç'");
$replace = array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E', 'a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'A', 'o', 'o', 'o', 'o', 'O', 'O', 'O', 'O', 'i', 'i', 'i', 'I', 'I', 'I', 'I', 'I', 'u', 'u', 'u', 'u', 'U', 'U', 'U', 'U', 'y', 'y', 'Y', 'o', 'O', 'a', 'A', 'A', 'c', 'C'); $shguideID = $_POST['shguideID'];
$keywords = preg_replace($pattern, $replace, $_POST['keywords']);
//Then we remove unwanted characters by only allowing a-z, A-Z, comma, 'minus' and white space
$keywords = preg_replace("/[^a-zA-Z-,\s]/", "", $keywords);

echo json_encode($keywords);
}

最佳答案

如果您想用“e”等替换“é”,请使用 iconv()使用//TRANSLIT 修饰符

例如,

$newString = iconv('UTF-8', 'ASCII//TRANSLIT', $myString);

一个更完整的例子:

$ cat scratch.php
<?php
$x = "Prêt-à-porter";
var_dump(json_encode(iconv("UTF-8", "ASCII//TRANSLIT", $x)));


$ php scratch.php
string(15) ""Pret-a-porter""
$

关于php - 我怎样才能 preg_replace 像 'Prêt-à-porter' 这样的特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2050723/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com