Имеется исходный код на html:
<jdoc:include type="modules" name="left" style="rounded" />
который отвечает за отображение меню на сайте.
Преследуется цель заменить определенный участок кода результата данного выражения. Пишу следующее:
<?php
$a='<jdoc:include type="modules" name="left" style="rounded" />';
$b="Новые фото"; // искомый текст
$c="New photo"; // вставляемый текст
function foo($d) {
echo $d;
}
str_replace($b,$c,foo($a)); // здесь заменяем текст
?>
Результат - ноль. Все выводится как и прежде. В чем может быть ошибка?
1. headstik - 24 Декабря, 2011 - 15:50:44 - перейти к сообщению
2. Мелкий - 24 Декабря, 2011 - 16:00:54 - перейти к сообщению
Код бессмыслен и беспощаден.
0) ваша функция foo ничего не возвращает -> str_replace оперирует null'ом. После приведения типов - пустая строка.
1) str_replace изменённую строку возвращает. А не изменяет переданную.
2) в любом случае в $a не содержится $b.
3) На правах пророка - используется какой-то шаблонизатор, т.к. html-ом представленный фрагмент так же не является.
0) ваша функция foo ничего не возвращает -> str_replace оперирует null'ом. После приведения типов - пустая строка.
1) str_replace изменённую строку возвращает. А не изменяет переданную.
2) в любом случае в $a не содержится $b.
3) На правах пророка - используется какой-то шаблонизатор, т.к. html-ом представленный фрагмент так же не является.
3. headstik - 24 Декабря, 2011 - 22:24:45 - перейти к сообщению
Мелкий пишет:
Код бессмыслен и беспощаден.
0) ваша функция foo ничего не возвращает -> str_replace оперирует null'ом. После приведения типов - пустая строка.
1) str_replace изменённую строку возвращает. А не изменяет переданную.
2) в любом случае в $a не содержится $b.
3) На правах пророка - используется какой-то шаблонизатор, т.к. html-ом представленный фрагмент так же не является.
0) ваша функция foo ничего не возвращает -> str_replace оперирует null'ом. После приведения типов - пустая строка.
1) str_replace изменённую строку возвращает. А не изменяет переданную.
2) в любом случае в $a не содержится $b.
3) На правах пророка - используется какой-то шаблонизатор, т.к. html-ом представленный фрагмент так же не является.
Хотелось бы возразить по некоторым пунктам на следующих основаниях:
0) вышеуказанный код хотя и не заменяет необходимый текст, но меню выводит, а при заключении строки str_replace($b,$c,foo($a)); в комменты меню вообще не выводится;
1) так мне и нужна измененная строка;
2) результат вывода строки <jdoc:include type="modules" name="left" style="rounded" /> следующий:
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <div class="module_menu">
- <div>
- <div>
- <div>
- <h3>Главное меню</h3>
- <ul class="menu"><li id="current" class="active item1"><a href="http://mirdevushek.ru/"><span>Главная</span></a></li><li class="item3"><a href="/novye-foto.html"><span>Новые фото</span></a></li><li class="item2"><a href="/luchshie-foto.html"><span>Лучшие фото</span></a></li><li class="item5"><a href="/populjarnye-foto.html"><span>Популярные фото</span></a></li></ul> </div>
- </div>
- </div>
- </div>
и в функцию str_replace подставляется именно это значение (я так думаю );
3) именно, это и есть шаблон сайта. Разве это что-то меняет?