Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php正则表达式删除特殊字符_Php_Preg Replace - Fatal编程技术网

php正则表达式删除特殊字符

php正则表达式删除特殊字符,php,preg-replace,Php,Preg Replace,我有下面的代码来创建一个没有特殊字符的字符串,并用分隔符分隔,因为它在url中使用 $txt = preg_replace("/[^a-z0-9\s-]/", "", $txt); $txt = trim(preg_replace("/[\s-]+/", " ", $txt)); $txt = trim(mb_substr($txt, 0, 1024)); $txt = preg_replace("/\s/", "-", $txt); 到目前为止,它运行良好,但今天从其他数据库迁移时,我发现一

我有下面的代码来创建一个没有特殊字符的字符串,并用分隔符分隔,因为它在url中使用

$txt = preg_replace("/[^a-z0-9\s-]/", "", $txt);
$txt = trim(preg_replace("/[\s-]+/", " ", $txt));
$txt = trim(mb_substr($txt, 0, 1024));
$txt = preg_replace("/\s/", "-", $txt);
到目前为止,它运行良好,但今天从其他数据库迁移时,我发现一些失败

当txt有(½)上标时失败

当txt具有诸如°(温度)、®(版权)等符号时,™ (商标)失败

当txt已经。。。也失败了(这是最奇怪的,因为如果有一个点工作)

有人能帮忙吗


谢谢

我不知道你想做什么,但是

str_replace($string,$txt); 

我不知道你想做什么,但是

str_replace($string,$txt); 
应该可以

试试这个:

function friendlyURL($string){
        $string = preg_replace("`\[.*\]`U","",$string);
        $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$string);
        $string = htmlentities($string, ENT_COMPAT, 'utf-8');
        $string = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i","\\1", $string );
        $string = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $string);
        return strtolower(trim($string, '-'));
    }

$myFriendlyURL = friendlyURL("Barca rejects FIFA statement © on Olympics row ®");
echo $myFriendlyURL; // will echo barca-rejects-fifa-statement-on-olympics-row
试试这个:

function friendlyURL($string){
        $string = preg_replace("`\[.*\]`U","",$string);
        $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$string);
        $string = htmlentities($string, ENT_COMPAT, 'utf-8');
        $string = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i","\\1", $string );
        $string = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $string);
        return strtolower(trim($string, '-'));
    }

$myFriendlyURL = friendlyURL("Barca rejects FIFA statement © on Olympics row ®");
echo $myFriendlyURL; // will echo barca-rejects-fifa-statement-on-olympics-row

这三个点可能不是三个点,而是一个省略号:这很可能是由于输入的编码问题。它采用什么编码?请尝试设置unicode标志:
/pattern/u
这三个点可能不是三个点,而是一个省略号:这很可能是由于输入的编码问题。它采用什么编码?请尝试设置unicode标志:
/pattern/u
,这是错误的。(a) 逻辑上:必须删除
$txt
中的字符。(b)语法:你没有指定一个主题(在哪里搜索替换)。或者这样说:
str_replace
需要3个参数,你只指定了两个,不清楚它们应该是三个参数中的哪一个。是的,语法是错误的,它是为了给你一个想法,但你试图用yy替换xx。这是错误的。(a) 逻辑上:必须删除
$txt
中的字符。(b)语法上:你没有指定一个主题(在哪里搜索替换)。或者说:
str_replace
需要3个参数,你只指定了两个,不清楚这三个参数中应该是哪一个。是的,语法是错误的,它是给你一个想法,但你试图用yy替换xx。