2013-01-25 2 views
0

У меня есть такой код:ereg_replace - строка с прямым слэшем

<?php 
    $first = '<?xml version=\"1.0\" encoding=\"UTF-8\"?> TEST MESSAGE'; 
    echo ereg_replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "UPSS", $first); 
?> 

Это не работает. Я хотел бы получить: «ОБСЛУЖИВАНИЕ ИСПЫТАНИЯ UPSS»

Что я не так?

+2

Ereg устарел. Проверьте http://php.net/manual/en/function.ereg-replace.php (большой красный ящик :)) –

+0

Как говорит @VladPreda, не используйте 'ereg_replace()'. Он устарел. Вместо этого используйте 'preg_replace()'. Сказав это, в этом случае похоже, что вы просто хотите заменить простую строку без каких-либо сложных выражений, поэтому я бы сказал, что 'str_replace()' лучше. В функции замены регулярных выражений вам нужно будет избежать вопросительных знаков и других символов со специальным значением в регулярном выражении. – SDC

ответ

3

Хорошо, несколько вещей здесь:

первая проблема

Вы объявляющий $first с ' вместо "-х, но вы вытекающее ваши двойные кавычки, а значит, вы будете в конечном итоге с литральная строка <?xml version=\"1.0\" encoding=\"UTF-8\"?> TEST MESSAGE (с обратной косой чертой).

$first = '<?xml version=\"1.0\" encoding=\"UTF-8\"?> TEST MESSAGE'; 
//  ^   ^^  ^ ^   ^
// You don't need to escape " when using ' to create the string. 

Вместо либо вообще

$first = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> TEST MESSAGE"; 
//  ^   ^^  ^ ^   ^
// We escape because we've used " to create the string 

или

$first = '<?xml version="1.0" encoding="UTF-8"?> TEST MESSAGE'; 
//  ^   ^^  ^ ^   ^
// We do not escape, because we used ' to create the string, and therefore only need to escape '. 

будет правильным

вторая проблема

Вы используете ereg_replace. Зачем? Прежде всего, он используется для регулярного выражения, которое, похоже, не используется ни во что, во-вторых, оно устарело долгое время, в-третьих, вы не кормите его регулярным выражением. Вы также указываете замену на ", что означает, что вы заменяете строку БЕЗ обратных косых черт, и поэтому не можете найти совпадение (помните, что \" - это не то же самое, что и "). Если вы хотите использовать регулярное выражение прямо сейчас, посмотрите на preg_replace, однако вы хотите использовать str_replace вместо этого, глядя на вашу проблему:

echo str_replace('<?xml version="1.0" encoding="UTF-8"?>', 'UPSS', $first); 
0

Попробуйте использовать str_replace(). Если у вас есть цель проанализировать содержимое, вы должны использовать библиотеку XPath.

Смежные вопросы