在PHP中使用正则表达式删除特殊字符

时间:2014-08-24 14:35:32

标签: php regex

我有这个输入字符串:'- - Adele Gislan - Web Developer - - - '
 并且预期的输出是这个字符串:Adele Gislan - Web Developer

我使用这个正则表达式

$urli='- - Adele Gislan - Web Developer - - - ';
$urli = preg_replace("/\-[[:space:]]+$/","",$urli);
$urli = preg_replace("/\-+$/","",$urli);

但这会移除特殊字符" - "或" - "只有一次。

我试试这个

$urli = rtrim($urli, '-');
$urli = ltrim($urli, '-');

但不理想

4 个答案:

答案 0 :(得分:1)

您需要在字符类中包含空格和-符号

^[ -]+|[ -]+$

只需用空字符串替换匹配的字符。

DEMO

PHP代码将是,

<?php
$mystring = "- - Adele Gislan - Web Developer - - - ";
echo preg_replace('~^[ -]+|[ -]+$~', '', $mystring);
?>

<强>输出:

Adele Gislan - Web Developer

<强>解释

  • ^断言我们刚开始。
  • [ -]+匹配一个或多个空格或-个字符。
  • |逻辑OR运算符,通常用于组合两个正则表达式。
  • [ -]+匹配一个或多个空格或-个字符。
  • $断言我们在行尾。

答案 1 :(得分:0)

来自:

 - - Adele Gislan - Web Developer - - - 

Adele Gislan - Web Developer

使用:

[ -]{4,}

PHP预浸料:

'/[ -]{4,}/m'

或者你可以使用:

(?: *-+ *){2,}

PHP预浸料:

'/(?: *-+ *){2,}/m'

答案 2 :(得分:0)

如果您只想修剪前导和尾随的破折号和空格,则无需使用正则表达式。您可以使用一次trim来电话:

echo trim($urli, '- ');

第二个参数是要删除的字符列表。

输出:

Adele Gislan - Web Developer

答案 3 :(得分:0)

我是非常贪心并简单地匹配单词界限:

$str = ' - - Adele Gislan - Web Developer - - -';
$str = preg_replace('/.*?(\b.+\b).*/', '$1', $str);

» fiddle
» regex explanation