Я пытаюсь заменить амперсанды на своем html-коде, используя preg_replace, но проблема в том, что он ломает встроенный javascript && или URL-адрес javascript, например ?page=test&id=1
Теперь у меня есть этот код, который работает
$amp_replace = array();
$amp_replace[0] = '/(?<=\s)&(?!&)(?!#?[a-z0-9]+;)/';
$amp_replace[1] = '/(?<!&)&(?=\s)/';
$skin = preg_replace($amp_replace, '&', $skin);
Заменяет амперсанды, когда пробел слева или справа. не заменяйте, когда 2 амперсанда подряд (для javascript) или когда следует объект html.
Но я нахожу здесь довольно ненужную логику. Он также не заменяет амперсанды, если это похоже на тест и тест.
Поскольку я не эксперт по регулярным выражениям, это заняло у меня довольно много времени, поэтому я решил снова обратиться за помощью сюда.
Не лучше ли было бы просто заменить все амперсанды, если не в тегах сценария javascript? Я пробовал это уже, но без особого успеха
Кто-нибудь знает, как я могу заархивировать это? Спасибо
&
вообще туда попали? Разве вы не должны решить эту проблему? - person Tim Pietzcker   schedule 21.10.2011