2014-03-11 6 views
0

Попытка удалить дефисы, которые появляются перед началом алфавита и после окончания алфавита, но не терять промежутки между ними.удалять специальные символы до и после строки

  1. Пример

это строка я

---this-is-my-page-- 

выход: this-is-my-page

Примечание (без дефиса различны по каждому запросу, может быть много в номера)

2. Пример

, как это сделать,

--- это-это-страница ---

мне нужно заменить дефис, который находится между строкой с пустым пространством. но не для того, чтобы потерять дефисы в начале и в конце.

ответ

2

Использование trim функция будет работать для любого числа - (дефис) в начале или в конце строки,

$str = "---this-is-my-page---"; 
echo $str = trim($str,"-"); 

Edit:

И чем использовать str_replace,

$str = str_replace("-"," ",$str); 

DEMO.

+0

также, как это сделать, --- это-это-страница --- мне нужно заменить дефис, который находится между строкой с пустым пространством – Parthi04

+0

@ Parthi04 - Проверьте мой обновленный ответ с обновленной демонстрационной ссылкой. – Rikesh

+0

, тогда все дефисы будут заменены. Но я хочу заменить только дефис между ними без обрезки. – Parthi04

0
echo trim("---this-is-my-page---","-"); 

облицовку удаляет символ на и и начать

1

Использование trim($string, $trimCharacters):

отделка - Удаляет пробелы (или другие символы) от начала и конца строки

<?php 
    $str = '---this-is-my-page---'; 
    var_dump(trim($str, '-')); //string(15) "this-is-my-page" 
?> 

DEMO


Если вы только хотите заменить дефис внутри строки (а не в начале/конце), вы можете использовать регулярное выражение:

/^(-+)(.*?)(-+)$/ 

Regular expression visualization

..и заменить это с (first group)(second group with hyphens replaced)(third group).

В коде:

<?php 
    $str = '---this-is-my-page---'; 

    $str = preg_replace_callback('/^(-+)(.*?)(-+)$/', function($matches) { 
     return $matches[1] . str_replace('-', ' ', $matches[2]) . $matches[3]; 
    }, $str); 

    var_dump($str); //string(21) "---this is my page---" 
?> 

DEMO

Смежные вопросы