PHP: Как преобразовать одинарную кавычку в двойную кавычку во всех HTML-тэгах?

Используя изменяемый подход, мы можем использовать for_each для непосредственного обновления элементов последовательности посредством ссылок.

for_each(begin(myv1), end(myv1), [](double& a) { a *= 3; });


В настоящее время идут дебаты о том, разрешено ли for_each модифицировать элементы, как это называется «неизменяющим» алгоритмом.

Это означает, что for_each не разрешается изменять последовательность , на которой он работает (что относится к изменениям структуры последовательности - то есть делает недействительными итераторы). Это не означает, что мы не можем модифицировать неконстантные элементы вектора как обычно - сама структура не затрагивается этими операциями.

5
задан marknt15 28 May 2009 в 07:10
поделиться

6 ответов

Если вас не волнуют проблемы JavaScript и CSS, упомянутые в другом месте, попробуйте следующее:

$text = "<TEXTFORMAT LEADING='2'><P ALIGN='LEFT'><FONT FACE='Verdana' style='font-size:10' COLOR='#0B333C'>My name's Mark</FONT></P></TEXTFORMAT>";
echo preg_replace('/<([^<>]+)>/e', '"<" . str_replace("\\\\\'", \'"\', "$1") . ">"', $text);

Это взято из темы кем-то с точно такой же проблемой, что и вы, по адресу devshed.com .

3
ответ дан 14 December 2019 в 08:59
поделиться

Не совсем уверен, что именно вы пытаетесь выполнить ... Замену частей строки с помощью php можно выполнить с помощью функции str_replace:

str_replace("'", "\"", $yourString);
0
ответ дан 14 December 2019 в 08:59
поделиться

Используйте Tidy , который может исправить ваш HTML-код и вывести чистый XHTML. Он делает и другие приятные вещи, например, исправляет проблемы с вложением, теги в нижнем регистре и так далее.

0
ответ дан 14 December 2019 в 08:59
поделиться

Я знаю, что могу использовать регулярное выражение, но попробуйте: присвойте $ string содержимое, используя fpen (), fread () и т. Д. ..

$string = str_replace("'", '"', $string);
$array = explode('>', $string);
foreach($array as $key => $value){
    if(strpos($value, '<') <> 0 ){
       $array[$key] = str_replace('"', "'",$value);
    }
}
$string = implode('>',$array);
1
ответ дан 14 December 2019 в 08:59
поделиться

Я бы пошел с парсером dom или использовал свой собственный простой парсер тегов, который понимает цитирование, а также экранирование символов кавычек, так что это не требует ", - сказал он \" бла \ "" как он сказал \ , бла \ и пустая строка .

Он мог определить, находится ли изменяемое цитирование внутри легко помечать. За много лет я понял, что регулярные выражения слишком уязвимы для таких задач.

0
ответ дан 14 December 2019 в 08:59
поделиться

Да, это намного сложнее, чем вы могли догадаться это так. В некоторых культурах правила другие, и без знания того, на какой культуре вы хотите основывать их, становится невозможно. Рассмотрим известный (среди молодых людей) пример турецкого .

что вы имеете в виду все одинарные кавычки, содержащие атрибут. Вы бы не хотели, чтобы преобразовал b / c, это нарушило бы код.

Любое регулярное выражение будет хрупким. Если вы знаете, что ваш ввод будет конкретным набором простых случаев, вас может устроить регулярное выражение . В противном случае вам понадобится парсер DOM, который понимает сложную разметку HTML, например onmouseover = "(function () {document.getElementById (''); alert (\" ... \ ") ...}) ( ) " (например). Добавьте к этому атрибут, который может охватывать несколько строк. ;)

В последнее время мне не приходилось решать эту конкретную проблему, но, возможно, есть хороший способ сделать это с помощью HTML Tidy (подробнее здесь: http: //devzone.zend. com / article / 761 ) или подобный парсер http://sourceforge.net/projects/simplehtmldom/

3
ответ дан 14 December 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: