PHP | как получить путь к файлу, не включая папки вне корня моего проекта

Я пытаюсь загрузить файл CSS в пользовательский блок для своего сайта Concrete5, но у меня возникают проблемы. Импорт для моего CSS выглядит следующим образом:

$layout_dir = dirname(__FILE__) . '/';
<link href="<?php echo $layout_dir; ?>form.css" rel="stylesheet"  type="text/css">

Который будет пытаться импортировать мои стили с этим URL:

http://pragmatic.dev/Users/brady/Code/pragmatic/public/packages/theme_caboodle/blocks/hero_block/form.css

Эта проблема мне нужен путь, чтобы исключить:

/Users/brady/Code/pragmatic/public

часть моего пути, поэтому основа пути — это корень моего проекта:

/packages/theme_caboodle/blocks/hero_block/form.css

Как я могу настроить свой импорт так, чтобы он включал только путь из корня проекта, как это?

/packages/theme_caboodle/blocks/hero_block/form.css

Мне также нужно, чтобы этот путь не ломался при установке на сервер или чью-либо локальную машину. Таким образом, другой пользователь, использующий этот блок, имеет другую структуру папок, потому что он скачал его с рынка, поэтому я должен помнить об этом.

Это мое решение до сих пор, но оно довольно грубое, я нахожу:

$baseDir =  getcwd() . '/';
$fullDir = dirname(__FILE__) . '/';
//use this path for importing
$blockDir = str_replace("$baseDir","",$fullDir);

-1

Решение

Предполагая, что вы ищете часть пути, начинающуюся с ‘/ packages’, будет выполнено следующее регулярное выражение:

$layout_dir = dirname(__FILE__) . '/';
preg_match('%/packages/.+%', $layout_dir, $matches);

Тогда $ match [0] содержит то, что вы ищете.

1

Другие решения

Есть разные способы но простой способ:

<?php

$layout_dir = "http://pragmatic.dev/Users/brady/Code/pragmatic/public/packages/theme_caboodle/blocks/hero_block";

echo removeFromUrl($layout_dir, "/public", 1); // 0 = Left of /public, 1 = Right of /public

function removeFromUrl($mDir, $mStringToSplit, $mNumber){
return explode($mStringToSplit, $mDir)[$mNumber] . "/";
}

Результат:

введите описание изображения здесь

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector