2011-12-14 2 views
1

Следующая функция является частью кода, написанного в ядре плагина. Я занимаюсь обратным проектированием. Проблема в том, что мне нужно сделать str_replace, и я не могу, потому что он уже настроен на эхо.PHP Str_replace для функции эха

Функция есть.

function similar_posts($args = '') { 
    echo SimilarPosts::execute($args); 
} 

Я называю это в моих страницах с помощью similar_posts(), но то, что мне действительно нужно сделать в моей теме есть вызов $related = similar_posts(), однако эта функция установлена ​​на эхо. Как это изменить.

Я пробовал это.

function get_similar_posts($args = '') { 
     SimilarPosts::execute($args); 
    } 

Но это не дало никаких результатов.

+0

пытаются 'вернуть SimilarPosts :: выполнить ($ арг)', то вы можете сделать '$ связанные = similar_posts()' – codeling

ответ

2

Использование return вместо эхо.

Так что у вас есть:

return SimilarPosts::execute($args); 

вместо:

echo SimilarPosts::execute($args); 
+0

Я сделал это, но все равно, кроме вашего ответа. Спасибо –

+0

Добро пожаловать. –

1

Wrap функция внутри другого, в которой вы используете output buffering.

+0

ОП может изменить код так как он мечтает об этом. Управление буфером SO неправильным образом считается. –

1

Совершено это ..

function get_similar_posts($args = '') { 
    return SimilarPosts::execute($args); 
} 

и на странице get_similar_posts();

должны были подумать о что.

1

return из функции:

function get_similar_posts($args = '') { 
    return SimilarPosts::execute($args); 
} 
3
function get_similar_posts($args = '') { 
    return (SimilarPosts::execute($args)); 
} 
+1

return - это ключевое слово, а не функция. Пожалуйста, не обертывайте все, что возвращается в '()'. –

+0

Это всегда выглядит неправильно для меня, когда это не так, и я не вижу причин, почему я не должен. – GordonM

+0

Он подвержен будущим ошибкам, если вы (как пример) хотели бы вернуть переменную my reference, но оберните ее в '()', это будет ** не ** работать. –

2

Если вы хотите использовать значение SimilarPosts::execute ($args) возвращается, вам нужно использовать ключевое слово «возвращение» внутри get_similar_posts.

function get_similar_posts ($args = '') { 
    return SimilarPosts::execute($args); 
} 

Если вы не в состоянии изменить определение get_similar_posts есть способы, чтобы урвать содержание выведенного similar_posts, даже если это «набор эха».

Это может быть выполнено с использованием Output Control Functions, доступного на PHP.

function echo_hello_world() { 
    echo "hello world"; 
} 

$printed_data = ""; 

ob_start(); 
{ 
    echo_hello_world(); 

    $printed_data = ob_get_contents(); 
} 
ob_end_clean(); 

echo "echo_hello_world() printed '$printed_data'\n"; 

выход

echo_hello_world() printed 'hello world'