Как оптимизировать str_replace с разными кавычками

alexblade

Новичок
Как оптимизировать str_replace с разными кавычками

Имеется xml в котором хранится кусок чистого html с js , соответственно кавычки разные попадаются.
Сейчас я вывожу за два прохода одну и туже строку, вначале одни кавычки заменяю, потом другие
$body = str_replace(" \' ", " ' ", $xml[$i]->body);
$body = str_replace(' \" ', ' " ', $body);
как можно это сделать одним проходом ?
 

basboy

Новичок
str_replace воспринимает массивы для первых двух параметров. При этом замена будет произмодиться по соответствию.
http://php.net/str_replace

Пример оттуда
PHP:
// Order of replacement
$str     = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order   = array("\r\n", "\n", "\r");
$replace = '<br />';
// Processes \r\n's first so they aren't converted twice.
$newstr = str_replace($order, $replace, $str);

// Outputs: apearpearle pear
$letters = array('a', 'p');
$fruit   = array('apple', 'pear');
$text    = 'a p';
$output  = str_replace($letters, $fruit, $text);
echo $output;
 

alexblade

Новичок
basboy
по соответствию говоришь Outputs: apearpearle pear ... да только real time какойто... не везде получится использовать...
но попробую.

DiMA спб.
 

Фанат

oncle terrible
Команда форума
что, так сложно догадаться второй аргумент тоже сделать массивом?

и повторю вопрос SiMM - откуда слеши изначально взялись?
 

alexblade

Новичок
Ф. через хтмл форму присваиваю объекту - записываю в хмл и там слэши и &gt; ...
 

Фанат

oncle terrible
Команда форума
но в форму-то ты их записываешь без слешей?
ты не задумывался о том, откуда они берутся?
 

alexblade

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

alexblade

Новичок
Ф. ну да. вместо того чтоб подсказать где прочитать легче сказать нуну и промолчать.

all
// Outputs: apearpearle pearp
$letters = array('a', 'p');
$fruit = array('apple', 'pearp');
$text = 'a p';
$output = str_replace($letters, $fruit, $text);
echo $output;

на этом примере объясните плиз почему у нас
-а- заменяется на -apple- (это понятно) и потом каждая -р- (из apple) на -pear- .

а вот -p- заменяется только на -pearp- а -а- и -р- (из pearp) уже не заменяются - почему ?

потому что массив перебирается один раз и поочередно
после первого элемента -а-
получается apple p

а потом скрипт перебирает строчку apple p в поисках р и заменяет на pear и останавливается - так чтоли получается?
 

alexblade

Новичок
Ф. повторю свой вопрос - легче сказать нуну и промолчать? (отвечать не надо)
я бы предпочел подсказку - куда копать - что читать please!
 

alexblade

Новичок
ок. раз слова купленные.

а по поведению Outputs: apearpearle pearp (в гугле не найду)
я правильно понял логику?
 

Фанат

oncle terrible
Команда форума
а какая логика там еще может быть?
приведи пример
 

alexblade

Новичок
я думал ты приведешь..

про слэши чтото неполучается нагуглить
 
Сверху