Есть строка, например "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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть следующий код, где $query должна возвращать цену, что собственно, не происходитВызывая код выводит id(?id=1, например) корректно
Почему require открывает файл а fwrite вызывает ошибку? Warning: fwrite() expects parameter 1 to be resource, string given in
ЗдравствуйтеВозникла небольшая проблема с принятием POST данных при передаче их в PHP скрипт через ajax метод
Если не сложно, помогите разобраться с массивами и их выводамиПроблема в том, что простые массивы (ассоциативные или нет) - вывожу без проблем...