Jdatabase: поиск части строки, которая не соответствует строке $ X

Я использую некоторые запросы mysql для извлечения данных из таблицы Jdatabase в качестве строк . Теперь мне нужно найти часть этой строки, которая не соответствует другой строке (, которая на самом деле является подстрокой главной строки ). Это немного запутанно, но приведенный ниже пример облегчит понимание.

Основная строка : 23/CSE/4/2014

Подстрока : /CSE/4/2014

Требуемый вывод : 23

  

Что будет лучшим способом в соответствии со стандартами кодирования Joomla?   добиться этого?

2 голоса | спросил saibbyweb 22 PM00000060000001431 2016, 18:08:14

2 ответа


1

Если строка всегда будет разделяться с помощью косой черты и вы хотите получить первое значение, вы можете взорваться в такой массив:

$string = '23/CSE/4/2014';
$array = explode('/', $string);

echo $array[0]; // 23
echo $array[1]; // CSE
echo $array[2]; // 4
echo $array[3]; // 2014
ответил Lodder 22 PM00000060000005531 2016, 18:22:55
0

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

Если ваш sub_string всегда находится справа от значения, которое вы хотите выделить, тогда это будет делать:

Демо

$main_string = "23/CSE/4/2014";
$sub_string = "/CSE/4/2014";
echo str_replace($sub_string, '', $main_string);
// 23

Если выделенное значение может существовать по обе стороны суб_строки, то это выполнит задание:

Демо

$main_string = "23/CSE/4/2014";  // or "CSE/4/2014/23"
$sub_string = "CSE/4/2014";  // notice no leading/trailing slash on this value
echo trim(str_replace($sub_string, '', $main_string), '/');  // leading/trailing slashes are trimmed
// 23

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

Взрыв вашего main_string и sub_string, после чего выполняется повторное сравнение (или вызов array_diff()) для фильтрации отдельных значений, и /или потенциально наносят ущерб. Если желаемое значение совпадает с одним из значений разделителя с разделителем подпайки sub_string, вы потеряете то, что вы пытаетесь найти.

p.s. Поскольку по какой-то причине этот вопрос помечен mysql, я предлагаю эквивалент MySQL моего первого фрагмента:

Демо

SELECT REPLACE('23/CSE/4/2014', '/CSE/4/2014', '')
// 23
ответил mickmackusa 18 J0000006Europe/Moscow 2018, 08:17:40

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132