#php #regex
#php #регулярное выражение
Вопрос:
У меня есть следующие строки:
$a = "test1";
$b = "testamp;nbsp;2";
$c = "testamp;<3";
$d = "testamp;4";
Я хотел бы заменить вхождения «amp;», за которыми следуют некоторые буквы, и заканчивать на «;».
Вывод должен быть :
$a = "test1";
$b = "test 2";
$c = "test 3";
$d = "testamp;4";
Как я могу это сделать с помощью PHP?
Ответ №1:
В этом конкретном случае вам не нужно регулярное выражение, скорее всего, вам нужно декодировать HTML-объекты, и это можно сделать с помощью html_entity_decode() , как в:
$a = html_entity_decode("test1");
$b = html_entity_decode("testamp;nbsp;2");
$c = html_entity_decode("testamp;<3");
$d = html_entity_decode("testamp;4");
var_dump($a,$b,$c,$d);
Комментарии:
1. Это решение возвращает
"test<3"
, в то время как OP нуждается"test 3"
.
Ответ №2:
Используйте это:
$x = preg_replace('/amp;[a-z] ;/', ' ', $b);
echo $x;
Ответ №3:
Ответ @this .lau_ — лучший вариант, но если вам нужно регулярное выражение, попробуйте это
(amp;)([a-z]{1,4})(;)