2

我需要从字符串末尾删除域名。我尝试了以下代码:

    $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. ”。

我只需要从字符串末尾删除域名,如果域名存在于字符串中的任何位置,则不应删除它。如何更改代码?

任何帮助都应该不胜感激!

4

6 回答 6

2

不需要花哨的 preg 或 substr .. 只需使用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

第二种方法

如果没有.. 然后使用预匹配:)。

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

这将仅在 $str 结尾时才从 $str 中替换 $domainNAME (var 后的 $ 符号表示 AT 字符串结尾。

于 2013-04-10T04:15:32.500 回答
1

如果您真的希望_xmpp-client._tcp.example.com.在最终使用点时获得输出

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

你可以添加?如果您希望它是可选的

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

演示

于 2013-04-10T04:29:12.417 回答
1
$domainNAME="example.com";
$result="_xmpp-client._tcp.example.com..example.com";
$string = $result;
$string = substr($result,0, strrpos($result, $domainNAME)-1);   
echo $string;
于 2013-04-10T04:24:16.123 回答
1

您可以使用 preg_replace 并指定字符串标记的结尾$

$string = preg_replace("/" . $domainNAME . "$/", " ", $string);
于 2013-04-10T04:19:56.807 回答
0

利用str_ireplace('example.com.example.com', 'example.com', $string);

于 2013-04-10T04:20:28.800 回答
0
            $domainNAME="example.com";
            $length = strlen(".".$domainNAME);
            $result="_xmpp-client._tcp.example.com..example.com";
            $string = substr($result, 0, $length*(-1));

试试看。我希望它可以帮助你

于 2013-04-10T04:19:55.313 回答