2013-04-10 3 views
2

Мне нужно удалить доменное имя из конца строки. Я попытался следующий код:PHP удалить доменное имя из строки

$domainNAME="example.com"; 
    $result="_xmpp-client._tcp.example.com..example.com" 
    $string = $result; 
    $string = str_replace(".".$domainNAME, " ", $string); 

Вот результат "_xmpp-client._tcp.". Но результат должен быть «_xmpp-client._tcp.example.com.».

Мне нужно удалить доменное имя только с конца строки, если имя домена существует в любом месте строки, которую не нужно удалять. Как я могу изменить код для этого?

Любая помощь должна быть оценена!

ответ

1

вы можете использовать preg_replace и указать конец строки маркера $:

$string = preg_replace("/" . $domainNAME . "$/", " ", $string); 
0

Вы проверили эту ссылку? PHP Replace last occurrence of a String in a String?

+0

Спасибо вам ответить. Но это не должно работать. $ result и $ domainName - это динамические переменные. Иногда до последнего имени домена не должно быть двух точек (..). – NewPHP

+1

Я отредактировал свой ответ, я не читал внимательно, но вы должны проверить эту ссылку. –

2

Нет необходимости фантазии пропитанного связующим, ни подстрока .. просто использовать trim() функцию :)

удалит с обоих концов

echo trim($string,$domainNAME); 

удалит Domainname с конца строки

echo rtrim($string,$domainNAME); 

удалит domainName от начала строки

echo ltrim($string,$domainNAME); 

Пример

echo rtrim('demo.test.example.com',"example.com"); 
//@return demo.test 

2-й способ

если нет .. затем использовать матч PREG :).

$new_str = preg_replace("/{$domainNAME}$/", '', $str); 

это заменит $ Domainname от $ Str только если его в конце $ ул (знак $ после вар означает в конце строки.

+1

hmmm 'echo rtrim ($ string, $ domainNAME),' возвращает '_xmpp-client._t' здесь. – James

+0

обновлено :) .. извините за эту путаницу – Zalaboza

+0

lol, вот мой ответ сейчас: P – James

0
  $domainNAME="example.com"; 
      $length = strlen(".".$domainNAME); 
      $result="_xmpp-client._tcp.example.com..example.com"; 
      $string = substr($result, 0, $length*(-1)); 

Попробуйте это. Я хочу это может помочь вы

+0

слишком много для простой задачи. Preg_replace ("/ {$ domainNAME} $ /", '', $ str); в таком случае! – Zalaboza

0

Используйте str_ireplace('example.com.example.com', 'example.com', $string);

1
$domainNAME="example.com"; 
$result="_xmpp-client._tcp.example.com..example.com"; 
$string = $result; 
$string = substr($result,0, strrpos($result, $domainNAME)-1); 
echo $string; 
1

если вы действительно хотите иметь выход как _xmpp-client._tcp.example.com. с точкой в ​​конце использования

preg_replace("/\." . $domainNAME . "$/", " ", $string); 

и вы можете добавить? если вы хотите, чтобы быть факультативным

preg_replace("/\.?" . $domainNAME . "$/", " ", $string); 

Demo

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