ОК, смотри:

Я хочу сделать следующее (это пример):

  1. $ output = require ("script_execution.php");
  2. echo str_replace («привет», «пока», $ output);

Решение у меня есть:

(script_execution.php)

<?php
   echo "hello world....";
?>

(решение.php)

<?php

  ob_start();
  require( "script_execution.php" );
  $output = ob_get_contents();
  ob_end_clean();
  echo $output; // WOW!!! but.......................

?>

(вывод)

пока, мир ....

Вот проблема: это решение работает нормально, но Что произойдет, если "script_execution.php" имеет (exit;) ??? Окончательный вывод будет неправильным, потому что перед третьей инструкцией все выполнение будет остановлено.

¿Что я могу сделать, чтобы получить окончательный результат "script_execution.php" без выхода из моего сценария (solution.php)? Потому что, как вы знаете, окончательный вывод script_execution.php (независимо от инструкции выхода):

привет, мир ....

Спасибо! (возможно, используя потоки ??)

0
CRISHK Corporation 8 Фев 2013 в 08:00

1 ответ

Лучший ответ

Если вы оцениваете сценарий с помощью include или require, и он вызывает exit(), ваш сценарий завершается.

У меня есть два варианта, которые я вижу:

  1. Использование обработчика завершения работы с register_shutdown_function() для запуска, когда Вызывается exit(), затем захватывает выходной буфер внутри функции и распечатывает его.

  2. Выполняйте только script_execution.php, отправив HTTP-запрос на ваш сервер, примерно так:

    $output = file_get_contents( 'http://www.yoursite.com/script_execution.php');
    
2
nickb 8 Фев 2013 в 08:06
Большой! Я буду использовать первый для ob_start .. возможно, второй для другого использования. Спасибо!
 – 
CRISHK Corporation
8 Фев 2013 в 08:25