#php #regex #string
#php #регулярное выражение #строка
Вопрос:
я пытаюсь найти более быстрый способ замены всех двойных кавычек на одинарные в моей строке.
У меня есть большое количество html-эхо-файлов с PHP, но теперь я хочу заключить этот html в двойные кавычки, чтобы я мог просто использовать переменную вместо того, чтобы заключать ее в ‘.$string.’ и т.д.
Итак, я быстро написал это:
$string = "test '""'fweffwf""'dwfwfe";
$string = str_replace('"', "'", $string);
echo $string;
Но он ломается, потому что, я думаю, он думает, что я закрываю строку, когда она сталкивается с »
HTML, который у меня уже есть, довольно объемный, и мне предстоит еще многое сделать в будущем, и я не хочу вручную изменять каждый из них.
Есть идеи по этому поводу?
Комментарии:
1. Я думаю
"""
, что был унаследован от C .2. Вы можете экранировать a
"
в PHP с помощью обратной косой черты:так, например:
$string = "test "i am in quotes" end";
3. Похоже, вам нужно использовать
htmlspecialchars
для очистки данных вместо того, чтобы пытаться конвертировать кавычки и надеяться на лучшее.
Ответ №1:
Если экранирование кавычек становится затруднительным, вы можете использовать синтаксис heredoc:
$string = <<<EOD
test '""'fweffwf""'dwfwfe
EOD;
echo $string;
Это выводит:
test '""'fweffwf""'dwfwfe
Комментарии:
1. Работает, нужно ознакомиться с синтаксисом heredoc.
Ответ №2:
Ваш код должен быть,
<?php
$string = <<<EOT
test '""'fweffwf""'dwfwfe
EOT;
$pattern = "~"~";
$replacement = "'";
echo preg_replace($pattern, $replacement, $string);
?> //=> test ''''fweffwf'''dwfwfe
Не забудьте экранировать двойные кавычки, присутствующие внутри $pattern
переменной.