#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);
, спасибо за вашу помощь!