PHP preg_replace, нужно РЕГУЛЯРНОЕ выражение для замены «endofentry» number » />»

#php #regex #preg-replace

#php #регулярное выражение #preg-replace

Вопрос:

Мне нужно быстрое регулярное выражение для использования с preg_replace() в PHP, которое удалит экземпляры строки…

За «endofentry» следует любое трехзначное число » />», прикрепленное в конце.

любая помощь была бы фантастической, большое спасибо!

Комментарии:

1. Вам нужно извлечь трехзначное число?

Ответ №1:

Попробуйте это:

 preg_replace('/endofentry\d{3}\/>/', '', 'endofentry321/> asdfa s');
  

Протестировано здесь

Комментарии:

1. хм, с этим не очень повезло. На самом деле вокруг endofentry есть двойные кавычки .. т.Е. "endofentry481"/> more content... если бы вы могли обновить свой код для поддержки этих двойных кавычек, это было бы потрясающе!

2. @Gareth в чем проблема с добавлением этих кавычек? '%"endofentry\d{3}"/>%' Да, это так просто. @DShook Лучше использовать другие разделители, когда вам нужен этот символ в вашем регулярном выражении. Таким образом, вам не нужно его экранировать.

Ответ №2:

Если вам нужно извлечь трехзначное число, то это сработает:

 /(?<=endofentry)[0-9]{3}(?=/>)/
  

Как в:

 <?php

CONST REGEX = "/(?<=endofentry)[0-9]{3}(?=/>)/";
$stringSubject = "endofentry456/>";
preg_match(REGEX, $stringSubject, $match);
echo $match[0]; //echo's 456

?>
  

Если вам нужно заменить всю строку:

Обновить

 <?php

CONST REGEX = "/"endofentry"[0-9]{3}/>/";
$stringSubject = ""endofentry"567/>";
$stringReplace = "replace_me!";
echo preg_replace(REGEX, $stringReplace, $stringSubject); //echo's replace_me!

?>
  

Комментарии:

1. На самом деле вокруг endofentry есть двойные кавычки .. т.е. "endofentry481"/> more content... если бы вы могли обновить этот второй фрагмент кода для поддержки этих двойных кавычек, это было бы потрясающе, спасибо!

2. круто, разобрался — preg_replace("/"endofentry[0-9]{3}"/>/", '', $content); , спасибо за вашу помощь!