2016-04-10 2 views
0

У меня есть строка, как www.host.com, и мне нужно удалить начало с нее (в данном случае www.), чтобы сделать ее только host.com. Существует множество этих начал (например: m., wap. и т. Д.). Как это сделать эффективным и быстрым способом?Что является самым эффективным и быстрым способом удаления строки с начала? (PHP-оптимизация)

В настоящее время я использую этот код, но я думаю, что должно быть лучше/быстрее/очиститель путь:

<?php 

function _without_start($val, $start) 
{ 
    if(_starts($val, $start)) 
    { 
     $len = mb_strlen($start); 
     $val = mb_substr($val, $len); 
    } 

    return $val; 
} 

function _starts($str, $needle) 
{ 
    return (mb_substr($str, 0, mb_strlen($needle)) === $needle); 
} 

/********************************************/ 

$host = 'www.host.com'; 

$remove_from_beginning = array('www.', 'wap.', 'admin.'); 
foreach($remove_from_beginning as $start) 
{ 
    $host = _without_start($host, $start); 
} 

var_dump($host); 
+0

использование '' explode' и in_array', а не регулярное выражение. –

ответ

2

Вам не нужно Еогеасп для удаления Somethings из строки, это один будет лучше,

$url = preg_replace("/^(www|wap)\./si","","www.wap.com"); 
echo $url; 
0

Поскольку вы добавили Regex тега вы можете сделать список с помощью изменений в регулярных выражениях и сверить его строку и заменить empty строки.

Regex:^(www|admin|wap)\.

Regex101 Demo

1

С explode и in_array:

function _without_start($host, $prefixes) { 
    list($prefix, $remainder) = explode('.', $host, 2); 
    return in_array($prefix, $prefixes) ? $remainder : $host; 
} 

$prefixes = ['www', 'wap', 'admin']; 
$host = 'www.host.com'; 

echo _without_start($host, $prefixes); 
+0

Хороший пример;) – WebDevHere

0

Если вы для решения regex основе (в качестве одного из тега упоминает regex) , здесь вы идете

$remove_from_beginning = array('www.', 'wap.', 'admin.'); 
$final = ""; 

foreach($remove_from_beginning as $start) 
{ 
    $final = $final . "" . substr_replace($start, '', -1) . "" . "\.|"; 
} 

$final = substr_replace($final, '', -1); 

echo preg_replace("/" . "" . "(?:" . "" . $final . "" . ")" . "" . "(.*)" . "" . "/", "$1", "www.exaple.com"); 

Ideone Demo

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