Какую функцию PHP String использовать? - PullRequest
1 голос
/ 18 июля 2010

Какую строковую функцию я могу использовать для удаления всего после -? Строка не предопределена, поэтому rtrim() не работает.

9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png? 1

Ответы [ 7 ]

6 голосов
/ 18 июля 2010

Используйте функцию split explode и символ "-" в качестве разделителя. Он вернет массив строк. Если вы заботитесь только об информации до первого тире, просто используйте нулевой индекс возвращаемого массива.

редактировать:
Сожалею. После нескольких месяцев жизни в мире питонов первым пришло в голову разделение. explode - правильная функция.

изменить 2:
strip, lstrip и rstrip предназначены для обрезания пробелов в конце (-ах) строки.

4 голосов
/ 18 июля 2010

Вы можете использовать substr и strpos :

$id = substr($path, 0, strpos($path, '-'));

Или альтернативно preg_replace :

$id = preg_replace('/(.*?)-.*/', '\1', $path);
2 голосов
/ 18 июля 2010

Если вы знаете, что левая часть строки всегда числовая, вы можете использовать автоматическое преобразование типов PHP и просто добавить его в ноль. (при условии, что вы имеете в виду первый дефис)

Попробуйте это:

print 0 + '9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1'; //outputs 9453

1 голос
/ 18 июля 2010

Может быть быстрее, чем preg_replace:

$str = '9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1';

$str = explode('-', $str);
array_pop($str);
$str = implode('-', $str) . '-';

// result = 9453-abcafaf3ceb895d7b1636ad24c37cb9f-
1 голос
/ 18 июля 2010

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

$s = '9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1';
$str = preg_replace('!-[^-]*$!', '', $s);

echo $str; // outputs 9453-abcafaf3ceb895d7b1636ad24c37cb9f
1 голос
/ 18 июля 2010

Смотря какой тире? Я бы порекомендовал использовать explode и просто получить элемент массива для нужной вам строковой части. Проверьте это: http://php.net/explode

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

0 голосов
/ 18 сентября 2013

Если вы хотите исключить все до первого дефиса и объединить все остальное, вы можете сделать это:

<?php
$str='9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1';

$str = explode('-', $str);
$count = count($str);

// So far we have the string exploded but we need to exclude
// the first element of the array and concatenate the others

$new = ''; // This variable will hold the concatenated string

for($i=1;$i<$count;++$i){
    $new.=$str[$i];
}

echo $new; // abcafaf3ceb895d7b1636ad24c37cb9f100.png?1
?>

Таким образом, в основном вы просматриваете элементы и объединяете их, как они были изначально, ноТеперь мы пропускаем первый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...