Разрешить двойные кавычки (речевые знаки) в строке php при замене строки

#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 переменной.