Php 如何除去特殊字符之外的空间?

Php 如何除去特殊字符之外的空间?,php,regex,preg-replace,Php,Regex,Preg Replace,在my functions.php中,如果有以下代码: echo '<a href="'.preg_replace('/\s/','-',$search).'-keyword1.html">'.urldecode($search).'</a>'; echo'; 这将删除特殊字符 但是,我如何额外添加删除空间并将其替换为-和删除“ 所以,如果有人输入“哟!这里“我想在这里你可以删除任何非单词: preg_replace('/\W/', '-', $search); 如

在my functions.php中,如果有以下代码:

echo '<a href="'.preg_replace('/\s/','-',$search).'-keyword1.html">'.urldecode($search).'</a>';
echo';
这将删除特殊字符

但是,我如何额外添加删除空间并将其替换为-和删除“


所以,如果有人输入“哟!这里“我想在这里你可以删除任何非单词

preg_replace('/\W/', '-', $search);

如果要用一个破折号替换一系列不需要的字符,则可以使用以下方式:

preg_replace('/\W+/', '-', $search);
要删除周围的引号,然后用破折号替换任何其他垃圾,请尝试以下操作:

$no_quotes = preg_replace('/^"|"$/', '', $search);
$no_junk = preg_replace('/\W+/', '-', $no_quotes);
尝试:


这将用一个连字符替换多个空格/“特殊”字符。如果不需要,请删除“+”

如果某个字符以感叹号/other结尾,您可能需要删除任何尾随的连字符

对于OP的输入:““哟!这里“'这将产生'-yo这里-'
<?php

$str = '"yo! here"';

$str = preg_replace( array('/[^\s\w]/','/\s/'),array('','-'),$str);

var_dump($str); // prints yo-here

?>