PHP извлечение подстроки. Получить строку перед первой '/' или всей строкой - PullRequest
142 голосов
/ 20 декабря 2009

Я пытаюсь извлечь подстроку. Мне нужна помощь с этим в PHP.

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

home/cat1/subcat2 => home

test/cat2 => test

startpage => startpage

Я хочу получить строку до первого /, но если нет /, получить всю строку.

Я пытался,

substr($mystring, 0, strpos($mystring, '/'))

Я думаю, что это говорит - получить позицию /, а затем получить подстроку от позиции 0 до этой позиции .

Я не знаю, как справиться со случаем, когда нет /, не делая заявление слишком большим.

Есть ли способ справиться с этим делом, не делая оператор PHP слишком сложным?

Ответы [ 14 ]

2 голосов
/ 20 декабря 2009

Вы можете попробовать использовать регулярное выражение, как это:

$s = preg_replace('|/.*$|', '', $s);

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

0 голосов
/ 19 августа 2013

почему бы не использовать:

function getwhatiwant($s)
{
    $delimiter='/';
    $x=strstr($s,$delimiter,true);
    return ($x?$x:$s);
}

OR

   function getwhatiwant($s)
   {
       $delimiter='/';
       $t=explode($delimiter, $s);
       return ($t[1]?$t[0]:$s);
   }
0 голосов
/ 20 ноября 2010
$string="kalion/home/public_html";

$newstring=( stristr($string,"/")==FALSE ) ? $string : substr($string,0,stripos($string,"/"));
0 голосов
/ 20 декабря 2009

Я думаю, это должно работать?

substr($mystring, 0, (($pos = (strpos($mystring, '/') !== false)) ? $pos : strlen($mystring)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...