Есть строка, например "AK-47 | Красная линия (Factory New)"
Мне нужно сначала в зависимости от того, что в скобках, задать нужное значение в переменную(ну это я и сам смогу, только нужно записать все что в скобках в переменную), потом убрать " (Factory New)".
То есть была строка "AK-47 | Красная линия (Factory New)", а теперь "AK-47 | Красная линия" и в другой переменной значение "Factory New".
как это сделать?
Есть разные способы, но исходить нужно из того, насколько могут быть различны вариации входных данных. Первое, что напрашивается, это регулярные выражения, при том, что я далеко не большой их поклонник:
preg_match('/(.*)\s\(([^()]+)\)$/', 'AK-47 | Красная линия (Factory New)', $matches);
print_r($matches);
Или таким образом:
$result = preg_split('/[()]/', 'AK-47 | Красная линия (Factory New)', -1, PREG_SPLIT_NO_EMPTY);
print_r($result);
Можно обойтись без них, при условии, что формат строк будет именно таким, как вы показали в примере. Т.е. разбить строку по открывающей скобке, если вы уверены, что такая всегда будет в единственном числе:
$result = array_map(function($a){
return trim($a, ' ()');
}, explode('(', 'AK-47 | Красная линия (Factory New)'));
print_r($result);
Вот еще один вариант:
$str = 'AK-47 | Красная линия (Factory New)';
$bracket_pos = strpos($str, '(');
echo substr($str, 0, $bracket_pos);
echo trim(substr($str, $bracket_pos+1), ')');
Можно попробовать с помощью регулярных выражений выделить значение в скобках.
preg_match("(.*?)\((.*?)\)", $string, $new_value);
Он разложит ваше выражение на группы. В группе один будет надпись до скобок, в группе два надпись в скобках. Доступ к ним можно получить следующим образом:
$new_value[1] - 1 группа$new_value[2] - 2 группаДля более гибкой настройки советую почитать о регулярных выражениях и для теста этот ресурс: https://regex101.com/
$str = 'AK-47 | Красная линия (Factory New)';
$first_str = trim(strtok($str, '('));
$second_str = trim(strtok(')'));
echo "First: $first_str\n";
echo "Second: $second_str\n";
Ещё вариант в коллекцию ответов:
$string = "AK-47 | Красная линия (Factory New)";
echo preg_replace('~\s?\([^)]+\)~', '', $string);// AK-47 | Красная линия
echo preg_replace('~[\s\S]+[(]|[)]*~', '', $string);// Factory New
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости