在PHP中剪切字符串

时间:2018-01-09 19:10:47

标签: php

我正在处理一些非常简单的事情,但我发现很难解决这个问题。

我有一个字符串,其中包含由用户管理的web地址...所以它可以是:

是否有一种简单的方法可以识别并将其剪切到mydomain.com?这样它会保持统一吗?

function after ($this, $inthat) {
if (!is_bool(strpos($inthat, $this)))
return substr($inthat, strpos($inthat,$this)+strlen($this));
};
$web_data="";
if(!strpos($data["web"], "http://") {
$web_data=after ("http:\\", $data["concert_web"]);
}
if(!strpos($data["web"], "https://") {
$web_data=after ("https://", $data["concert_web"]);
}
if(!strpos($data["web"], "www") {
$web_data=after ("www", $data["concert_web"]);
}

我收集了那个剧本,但感觉不对,是否面向未来?我很想学习,并提前感谢你的任何评论。

2 个答案:

答案 0 :(得分:2)

我个人会将{regex与preg_replace结合使用。像这样:

// Strings for testing the case.
$domains = [
  'foodomain.com',
  'www.foodomain.com',
  'http://foodomain.com',
  'https://www.foodomain.com',
  'https://www.foodomain.www.com',
];


$result_strings = preg_replace(
  [
    '#^https?://#', // First, remove protocol.
    '#^www.#',      // Remove www. from the beginning.
  ],
  '', // Replace by an empty string.
  $domains // You can pass your string here.
);

print_r($result_strings);  // It will output result string for each of the domains from $domains array.

输出:

Array
(
    [0] => foodomain.com
    [1] => foodomain.com
    [2] => foodomain.com
    [3] => foodomain.com
    [4] => foodomain.www.com
)

答案 1 :(得分:1)

您可以结合parse_url($URL, PHP_URL_HOST)提及AbraCadaver和RegEx(通过preg_match())。

<?php

$URL = 'https://www.sub.domain.tld/file.php?okay=true';
preg_match('/([^\.]+\.[^\.]+)$/', parse_url($URL, PHP_URL_HOST), $m);
$DomainOnly = $m[1];

?>

$DomainOnly将为domain.tld。所有子域名都将被删除。