PHP - заменить символы в строке

Я прочитал несколько статей о str_replace() здесь и на других ресурсах, но не нашел ответа на свою проблему.

Вот строка, с которой у меня возникла проблема, которая хранится в $title ...

Paul McCartney's Theme From The Film "The Honorary Consul”

Вот код, который я использую ...

str_replace(‘“‘,’ ‘,$title);

По какой-то причине приведенный выше код полностью игнорирует эту строку и ряд других похожих.

Я думаю, это может быть из-за апострофа, поскольку приведенный выше код отлично работает для строк, которые не содержат апострофа как части текста.

Мне нужно сохранить в названии апостроф, но меня не так беспокоит "

Однако, если кто-то может предложить способ сохранить и то, и другое в одной строке и добавить всю строку в командную строку MySQL INSERT, для меня это будет лучшим результатом.

ИСПОЛЬЗУЙТЕ ПОДГОТОВЛЕННЫЕ ЗАЯВЛЕНИЯ PDO !!!! Вам не нужно беспокоиться об этом с заранее подготовленными операторами. Если вы их не используете - вам следует начать немедленно, поскольку вы, вероятно, открыты для SQL-инъекций.

tftd 01.07.2018 00:50

@tftd вы можете опубликовать пример?]

Rich Starkie 01.07.2018 00:51

@RichStarkie php.net/manual/en/pdo.prepared-statements.php

Hyyan Abo Fakher 01.07.2018 00:54

Возможный дубликат Как я могу предотвратить SQL-инъекцию в PHP?

user3783243 01.07.2018 04:23

Ребята выше уже выложили более чем достаточно. И поскольку в какой-то момент вы можете запутаться, если будете использовать pdo exec или execute - это дополнительный бонус stackoverflow.com/questions/26849105/pdoexec-or-pdoexecute. : D

tftd 01.07.2018 10:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
1 398
2

Ответы 2

Вы можете использовать PDO :: цитата

На php.net есть хорошие примеры, просто посмотрите руководство.

Попробуйте так:

$title = 'Paul McCartney\'s Theme From The Film "The Honorary Consul”';
str_replace('”',' ', $title);

В любом случае, я бы порекомендовал вам использовать подготовленные операторы для вставки ваших данных.

Следуйте этому примеру: https://www.w3schools.com/php/php_mysql_prepared_statements.asp

Я бы избежал , если бы мог, но переменная $title исходит из API (из очень надежного и уважаемого источника)

Rich Starkie 01.07.2018 01:04

@RichStarkie, что возвращает var_dump ($ title)? Наверное, он уже сбежал.

Reza Saadati 01.07.2018 01:09

@RichStarkie, ладно, тебе не нужно убегать. Просто используйте вторую строку моего кода. Вы использовали символ , что неверно. Это должен быть '.

Reza Saadati 01.07.2018 01:15

это команда, которую я уже использую, но она не работает :( похоже, что приложение SO не переводит ' должным образом :(

Rich Starkie 01.07.2018 01:17

@RichStarkie, что возвращает var_dump(str_replace('”',' ', $title));?

Reza Saadati 01.07.2018 01:19

придется запустить весь сценарий, что займет около часа (эта запись составляет примерно четверть пути от набора данных), хотя оператор MySQL - это INSERT INTO tablename ( trackId, releaseID, trackTitle, artistId, trackPosition) VALUES ('3820941 - 0002', '3820941', 'Paul McCartney's Theme From The Film "The Honorary Consul"', '273394', 'A2' )

Rich Starkie 01.07.2018 01:23
string(58) "Paul McCartney's Theme From The Film "The Honorary Consul"" - это ответ @reza
Rich Starkie 01.07.2018 01:39

@RichStarkie Итак, у вас нет , у вас есть ". Но в любом случае не исправляйте это, это не ответ. Делайте это правильно, параметризуйте свой запрос.

user3783243 01.07.2018 04:24

Другие вопросы по теме