VisualEditorController.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace App\Distributor\Controllers;
  3. use App\Distributor\Metrics\DistMessage;
  4. use App\Distributor\Repositories\SiteMenu;
  5. use App\Http\Controllers\Controller;
  6. use Dcat\Admin\Layout\Column;
  7. use Dcat\Admin\Layout\Content;
  8. use Dcat\Admin\Layout\Row;
  9. class VisualEditorController extends Controller
  10. {
  11. public function index()
  12. {
  13. $mid = isset($_GET['mid'])? intval($_GET['mid']) : 0;
  14. $uri = isset($_GET['uri'])? $_GET['uri'] : '';
  15. //网站html内容
  16. $url = getSiteDomain();
  17. $html = $this->getURlHTML($url,$uri);
  18. //菜单
  19. $siteMenu = SiteMenu::showAllSelectOptions();
  20. //
  21. return view('distributor.pages-custom.visual-editor',['html'=>$html,'siteMenu'=>json_encode($siteMenu),'mid'=>$mid]);
  22. }
  23. private function getURlHTML($url,$uri)
  24. {
  25. //echo $url;exit;
  26. $siteUrl = $url . $uri;
  27. $ch = curl_init($siteUrl);
  28. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回原生的(Raw)输出
  29. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查(在生产环境中,应将其设置为true并指定CA证书路径)
  30. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 跳过证书主机名验证
  31. $html = curl_exec($ch);
  32. if (curl_errno($ch)) {
  33. echo 'cURL error: ' . curl_error($ch);
  34. }
  35. curl_close($ch);
  36. $pattern = '/<(link|script|img)[^>]*\s+(href|src)=["\'](\/[^"\']+)["\'][^>]*>/i';
  37. $replacement = function($matches) use ($url) {
  38. // $matches[3] 是匹配到的以 / 开头的路径
  39. return str_replace($matches[3], $url . $matches[3], $matches[0]);
  40. };
  41. $html = preg_replace_callback($pattern, $replacement, $html);
  42. return $html;
  43. }
  44. }