2016-05-06 3 views
0

к сожалению, мне приходится иметь дело с неисправным HTML сущностей в тексте, напримерзаменить неправильный HTML объекты с помощью preg_replace

& Мидота,

вместо правильного лица с окончанием точки с запятой.

Я попытался

$pattern = "/^&[a-zA-Z]+?,/"; 
$replace = "/^&[a-zA-Z]+?;/"; 
$detailtext = preg_replace($pattern,$replace, $detailtext); 

, но это не работает ... Это сводит меня с ума, я новичок в регулярных выражений и любая помощь будет принята с благодарностью!

Пример $detailtext:

$detailtext = "Unterputz-Einsätze<br>mit Federklemmen (Verbindungsklemmen nach VDE 0632). <br>Die Einsätze können wahlweise mit Standard- oder Flächenabdeckung <br>bestückt werden.<br>Wippschalter<br>10 AX 250 V&sim,<br>Ausführung: Universalschalter (Aus-Wechsel)<br>" 
+2

Вы '#' в шаблоне и '& Мидот,' не содержит хэш. Итак, это не удивительно. –

+0

показать значение '$ detailtext' – RomanPerekhrest

+0

, попробовав его без #. добавила его из-за ответа, который я прочитал на SO. Не работает без него – Burnt

ответ

2

Вы должны попробовать это:

$pattern ="/(&[a-zA-Z]+),/" 
$replace ="$1;"; 
$detailtext = preg_replace($pattern,$replace, $detailtext); 

скобка будет захватывать объекты, которые следуют "" и вы можете получить их с "$ N", n - номер группы захвата. Поэтому замените на «$ 1», а затем завершаете точку с запятой.

+0

Вот и все! Большое спасибо за короткий, но очень четкий ответ. – Burnt

+0

Добро пожаловать! –

0

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

$str = preg_replace("/(\&.*)(\,)/", "$1;", $str); 
Смежные вопросы