Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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 使用正则表达式从字符串中删除除[a-zA-Z0-9-]以外的所有内容_Php_Regex_Url Rewriting_Seo_Preg Replace - Fatal编程技术网

Php 使用正则表达式从字符串中删除除[a-zA-Z0-9-]以外的所有内容

Php 使用正则表达式从字符串中删除除[a-zA-Z0-9-]以外的所有内容,php,regex,url-rewriting,seo,preg-replace,Php,Regex,Url Rewriting,Seo,Preg Replace,我在这些论坛上搜索过,似乎每个人对我的问题都有一点不同 我有以下字符串To-Wage-a-64位-Coup我想使用preg_replace()删除任何不是字母、数字或连字符的内容。最终结果是感叹号将被删除 我不知道所有需要删除的角色,但我知道什么需要保留。这是为了生成一个seo友好的url。不确定我需要的是消极的还是积极的前瞻,或者可能使用类似于preg\u match()的其他方法来完成我的目标 preg_replace("([^a-zA-Z0-9-])","",$subject); 将^放

我在这些论坛上搜索过,似乎每个人对我的问题都有一点不同

我有以下字符串
To-Wage-a-64位-Coup
我想使用
preg_replace()
删除任何不是字母、数字或连字符的内容。最终结果是感叹号将被删除

我不知道所有需要删除的角色,但我知道什么需要保留。这是为了生成一个seo友好的url。不确定我需要的是消极的还是积极的前瞻,或者可能使用类似于
preg\u match()
的其他方法来完成我的目标

preg_replace("([^a-zA-Z0-9-])","",$subject);
^
放在
[…]
的开头以抵消其效果

$string = preg_replace("'[^A-Za-z0-9-]'", '', $string);
A-Za-z0-9-匹配字母、数字和连字符。开头的“^”否定该字符类,因此它匹配除这些字符以外的所有字符


如果这是为了创建一个URL友好的字符串,你可能还需要考虑首先将空格转换为SHIPENS,删除可能导致的多个SHIPENS,并将字符串转换为小写。这是你忘记的简单的事情。我想得太多了。