[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с str_replace()
Slavok47
Всем привет!
Ребят есть такая проблема

например имеется
<table class="table">

нужно изменить класс

если сделать так
$classtag = str_replace('table', 'test', $_POST['editor1']);

то получится
<test class="test">

что логично...

попробовал так

$table = 'class="table"';
$table_str = 'class="test"';
$classtag = str_replace($table, $table_str, $_POST['editor1']);


но так вобще ни чего не меняется...
как правильно нужно?
Спасибо!
retro4u
Цитата (Slavok47 @ 23.07.2014 - 09:09)
Всем привет!
Ребят есть такая проблема

например имеется
<table class="table">

нужно изменить класс

если сделать так
$classtag = str_replace('table', 'test', $_POST['editor1']);

то получится
<test class="test">

что логично...

попробовал так

$table = 'class="table"';
$table_str = 'class="test"';
$classtag = str_replace($table, $table_str, $_POST['editor1']);


но так вобще ни чего не меняется...
как правильно нужно?
Спасибо!

Насколько я помню - это делается регулярными выражениями.
Slavok47
ну если через
preg_replace()

то регулярные для меня еще пока темный лес((
retro4u
ну вот так можно попробовать

$str = '<table class="table">';
$classtag = preg_replace('/class="table"/', 'class="test"', $str);
retro4u
Хотя я в общем-то поглядел - и твой вариант рабочий)
kaww
Slavok47, Значит у тебя в строке не <table class="table"> , а что-то другое.Например, где-нибудь затесался пробел, символ переноса, конца строки и т.д.
Если запустить код ниже, то убедишься, что с теми данными, которые ты привел, все работает

$str = '<table class="table">';
$table = 'class="table"';
$table_str = 'class="test"';
echo str_replace($table, $table_str, $str);
retro4u
мне тоже так кажется.
глядеть надо $_POST['editor1'] - что именно туда передается.
Valick
Slavok47, зачем вы это делаете? это какой-то парсер спионеренного контента?


_____________
Стимулятор ~yoomoney - 41001303250491
Slavok47
Цитата (kaww @ 23.07.2014 - 06:49)
Slavok47, Значит у тебя в строке не <table class="table"> , а что-то другое.Например, где-нибудь затесался пробел, символ переноса, конца строки и т.д.
Если запустить код ниже, то убедишься, что с теми данными, которые ты привел, все работает

$str = '<table class="table">';
$table = 'class="table"';
$table_str = 'class="test"';
echo str_replace($table, $table_str, $str);

перепроверил, даже скопировал фрагмент из БД, но все равно не меняет...
Slavok47
чет я тупанул, в БД смотрел,
а вот если вставить в форму
<table class="table">


то переменная выводит из формы уже так
<table class=\"table\">
retro4u
Цитата (Slavok47 @ 23.07.2014 - 12:52)
чет я тупанул, в БД смотрел,
а вот если вставить в форму
<table class="table">


то переменная выводит из формы уже так
<table class=\"table\">

Ну ясное дело - экранирует слэши.
Slavok47
ну если точнее, то слэши экранируют кавычки))
Slavok47
ну все понятно, в чем была проблема, вот так все работает

$table = 'class=\"table\"';
$table_str = 'class=\"test\"';
$classtag = str_replace($table, $table_str, $_POST['editor1']);
retro4u
Цитата (Slavok47 @ 23.07.2014 - 13:04)
ну если точнее, то слэши экранируют кавычки))

ачипятк))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.