Ваш вопрос неясен / неоднозначен. Вы используете этот термин remove, но, вероятно, вы имеете в виду, extractчто целевая строка может быть сохранена в базе данных.
mickmackusa
@ Макен Я чувствую себя довольно уверенно, что вы испортили вопрос, чтобы сделать многие ответы правильными. Подумайте об этом: почему ОП хочет сохранить REGISTER hereв базе данных?
mickmackusa
2
@mickmackusa remove может быть синонимом take take from, то есть, вынимая 11223344 из строки, я не вижу здесь проблемы. В худшем случае это неоднозначно, это, конечно, не "вандализм"
Ник
Прочитайте предварительно аннулированную версию (и). @Nick stackoverflow.com/posts/2192170/revisions Правда изменит ваше мнение. Я был бы рад видеть этот вопрос закрытым как неясный.
mickmackusa
2
@mickmackusa Я сделал ... Я не понимаю твою точку зрения. Если у вас такая большая проблема с тем, как написано, почему бы не исправить это самостоятельно
Ник
Ответы:
220
Если вы нацелены на «11223344», используйте str_replace:
заменить Обязательно. Определяет значение для замены значения в find
Обязательная строка . Определяет строку для поиска
количество необязательно. Переменная, которая считает количество замен
Согласно примеру OP:
$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"
@ElijahLynn replace требует, чтобы вы удалили вещи, будущие изменения или шум сломался бы. Делая это через _replace, но _match продолжит работать.
TravisO
@ TravisO хорошо да, но нет. Эти две функции практически одинаковы при реализации, и вероятность того, что будущие изменения затронут любую из них, одинакова . Та же самая вероятность будущих изменений только на _match, что делает это использование недействительным и _replace по-прежнему работает нормально. Кроме того, управление версиями обычно очень важно, чтобы не тормозить предыдущую функциональность, если это возможно.
КТ.
Вам не нужна группа захвата здесь. Фактически, использование группы захвата излишне раздувает $matchмассив. Удалите скобки, а затем получите доступ через $match[0].
Mickmackusa
5
substr () - встроенная функция php, которая возвращает часть строки. Функция substr () будет принимать строку в качестве входных данных, индексную форму, где вы хотите обрезать строку. и необязательный параметр - длина подстроки. Соответствующую документацию и пример кода вы можете найти на http://php.net/manual/en/function.substr.php.
Как вы предлагаете, чтобы ОП использовал ваш общий совет для достижения желаемого результата?
Mickmackusa
Я нахожу этот ответ неопределенным и малоценным.
Mickmackusa
1
Динамически, если вы хотите удалить (а) часть (и) из (а) фиксированного индекса (ов) строки, используйте эту функцию:
/**
* 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 partsif(is_array($index)){foreach($index as $i){
unset($stringParts[(int)($i)]);}}else{
unset($stringParts[(int)($index)]);}// Join all parts together and return itreturn implode($delimiter, $stringParts);}
Для вашей цели:
remove_from_str("REGISTER 11223344 here",1);// Output: REGISTER here
Одним из его применений является выполнение командных строк, которые вы знаете их структуры.
В preg_replace()этом случае нет абсолютно никаких причин передавать массивы . Также нет никакой пользы от использования группы захвата.
mickmackusa
Я согласен. Массив добавлен просто для удобства. Им можно пренебречь. это не навредит. Добавлена группа захвата для исключения чисел. Это работает согласно поставленному вопросу. А дальнейшие модификации и доработки могут быть сделаны исходя из индивидуальных особенностей.
arango_86
Я хочу сказать, что в вашем фрагменте есть ненужные включения, которые нет смысла включать.
Не вернет ли он «REGISTER__here» с двумя пробелами (подчеркните, что пробелами, комментарии не позволят мне два последующих пробела)? Из-за пробелов до и после "(. *)".
TechNyquist
6
Этот ответ по крайней мере на 100% неверен. Доказательство: 3v4l.org/LDLEM, почему в этом ответе 15 UV?
remove
, но, вероятно, вы имеете в виду,extract
что целевая строка может быть сохранена в базе данных.REGISTER here
в базе данных?Ответы:
Если вы нацелены на «11223344», используйте
str_replace
:источник
Вы можете использовать str_replace () , который определяется как:
Таким образом, вы можете написать код как:
Если вам нужно лучшее соответствие с помощью регулярных выражений, вы можете использовать preg_replace () .
источник
при условии, что 11223344 не является постоянным
источник
Согласно примеру OP:
источник
Когда вам нужно соответствие на основе правил, вам нужно использовать регулярное выражение
Это будет соответствовать первому набору чисел, поэтому, если вам нужно быть более конкретным, попробуйте:
источник
$match
массив. Удалите скобки, а затем получите доступ через$match[0]
.substr () - встроенная функция php, которая возвращает часть строки. Функция substr () будет принимать строку в качестве входных данных, индексную форму, где вы хотите обрезать строку. и необязательный параметр - длина подстроки. Соответствующую документацию и пример кода вы можете найти на http://php.net/manual/en/function.substr.php.
ПРИМЕЧАНИЕ: индекс для строки начинается с 0.
источник
Динамически, если вы хотите удалить (а) часть (и) из (а) фиксированного индекса (ов) строки, используйте эту функцию:
Для вашей цели:
Одним из его применений является выполнение командных строк, которые вы знаете их структуры.
источник
В следующем фрагменте будет напечатано «Зарегистрироваться здесь»
API preg_replace () использует нас, как указано ниже.
источник
preg_replace()
этом случае нет абсолютно никаких причин передавать массивы . Также нет никакой пользы от использования группы захвата.Сделайте следующее
Это вернет "РЕГИСТРАЦИЯ здесь"
или
Это вернет "РЕГИСТРАЦИЯ здесь"
источник