Як я можу видалити частину рядка?
Приклад рядка: "REGISTER 11223344 here"
Як я можу видалити "11223344"
рядок із наведеного вище прикладу?
REGISTER here
в базі даних?
Як я можу видалити частину рядка?
Приклад рядка: "REGISTER 11223344 here"
Як я можу видалити "11223344"
рядок із наведеного вище прикладу?
REGISTER here
в базі даних?
Відповіді:
Якщо ви спеціально орієнтуєтесь на "11223344", тоді використовуйте str_replace
:
// str_replace($search, $replace, $subject)
echo str_replace("11223344", "","REGISTER 11223344 here");
Ви можете використовувати str_replace () , який визначається як:
str_replace($search, $replace, $subject)
Таким чином, ви можете написати код так:
$subject = 'REGISTER 11223344 here' ;
$search = '11223344' ;
$trimmed = str_replace($search, '', $subject) ;
echo $trimmed ;
Якщо вам потрібна краща відповідність за допомогою регулярних виразів, ви можете використовувати preg_replace () .
str_replace(find, replace, string, count)
Відповідно до прикладу ОП:
$Example_string = "REGISTER 11223344 here";
$Example_string_PART_REMOVED = str_replace('11223344', '', $Example_string);
// will leave you with "REGISTER here"
// finally - clean up potential double spaces, beginning spaces or end spaces that may have resulted from removing the unwanted string
$Example_string_COMPLETED = trim(str_replace(' ', ' ', $Example_string_PART_REMOVED));
// trim() will remove any potential leading and trailing spaces - the additional 'str_replace()' will remove any potential double spaces
// will leave you with "REGISTER here"
Коли вам потрібна відповідність на основі правил, вам потрібно використовувати регулярний вираз
$string = "REGISTER 11223344 here";
preg_match("/(\d+)/", $string, $match);
$number = $match[1];
Це буде відповідати першому набору чисел, тому якщо вам потрібно бути більш конкретним, спробуйте:
$string = "REGISTER 11223344 here";
preg_match("/REGISTER (\d+) here/", $string, $match);
$number = $match[1];
$match
масив. Вилучіть круглі дужки, потім перейдіть через $match[0]
.
substr () - це вбудована функція php, яка повертає частину рядка. Функція substr () буде приймати рядок як вхід, індексну форму, де потрібно обрізати рядок. і необов'язковий параметр - довжина підрядки. Ви можете переглянути належну документацію та приклад коду на http://php.net/manual/en/function.substr.php
ПРИМІТКА: індекс для рядка починається з 0.
Динамічно, якщо ви хочете видалити (а) частину (-и) з (а) фіксованих індексів рядка, використовуйте цю функцію:
/**
* Removes index/indexes from a string, using a delimiter.
*
* @param string $string
* @param int|int[] $index An index, or a list of indexes to be removed from string.
* @param string $delimiter
* @return string
* @todo Note: For PHP versions lower than 7.0, remove scalar type hints (i.e. the
* types before each argument) and the return type.
*/
function removeFromString(string $string, $index, string $delimiter = " "): string
{
$stringParts = explode($delimiter, $string);
// Remove indexes from string parts
if (is_array($index)) {
foreach ($index as $i) {
unset($stringParts[(int)($i)]);
}
} else {
unset($stringParts[(int)($index)]);
}
// Join all parts together and return it
return implode($delimiter, $stringParts);
}
Для вашої мети:
remove_from_str("REGISTER 11223344 here", 1); // Output: REGISTER here
Одне з його звичаїв - виконання командних рядків, якими ви знаєте їхні структури.
Наступний фрагмент надрукує "РЕЄСТРУЙТЕ тут"
$string = "REGISTER 11223344 here";
$result = preg_replace(
array('/(\d+)/'),
array(''),
$string
);
print_r($result);
API preg_replace () використовує нас, як зазначено нижче.
$result = preg_replace(
array('/pattern1/', '/pattern2/'),
array('replace1', 'replace2'),
$input_string
);
preg_replace()
цьому випадку немає абсолютно ніяких причин передавати масиви . Також немає користі від використання групи захоплення.
Виконайте наступне
$string = 'REGISTER 11223344 here';
$content = preg_replace('/REGISTER(.*)here/','',$string);
Це поверне "РЕЄСТРУЙТЕ туди"
або
$string = 'REGISTER 11223344 here';
$content = preg_replace('/REGISTER (.*) here/','',$string);
Це поверне "РЕЄСТРУЙТЕ тут"
remove
, але, мабуть, ви маєте на увазі,extract
щоб цільовий рядок міг зберігатися у базі даних.