簡體   English   中英

在PHP中使用正則表達式刪除特殊字符

[英]remove special characters with regular expression in PHP

我有以下輸入字符串: '- - 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, '-');

但不是理想的

您需要在字符類中包含空格和-符號,

^[ -]+|[ -]+$

只需將匹配的字符替換為空字符串即可。

DEMO

PHP代碼是

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

輸出:

Adele Gislan - Web Developer

說明:

  • ^斷言我們是開始。
  • [ -]+匹配一個或多個空格或-字符。
  • | 邏輯“或”運算符,通常用於組合兩個正則表達式。
  • [ -]+匹配一個或多個空格或-字符。
  • $斷言我們處於行尾。

要獲得:

 - - Adele Gislan - Web Developer - - - 

Adele Gislan - Web Developer

采用:

[ -]{4,}

PHP-預浸料:

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

或者,您可以使用:

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

PHP-預浸料:

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

如果您只想修剪開頭和結尾的破折號和空格,則無需使用正則表達式。 您可以使用一個電話來trim

echo trim($urli, '- ');

第二個參數是要刪除的字符列表。

輸出:

Adele Gislan - Web Developer

我會很貪婪 ,只需匹配單詞邊界即可:

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

»小提琴
»正則表達式說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM