2017-01-20 2 views
-1

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

$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); 
+0

$ layout_after = explode ("/ public", $ layout_dir) [1]. "/"; –

+0

Ваше решение в порядке. – yivi

ответ

1

Предполагая, что вы ищете часть пути, начинающегося с ума ч «/ пакеты», следующее регулярное выражение будет делать:

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

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

+0

Это решение работало лучше всего для меня !! Я просто добавил сервер к пути, чтобы немного его подправить, используя это: $ row ['assetPath'] = '//'. $ _SERVER ['HTTP_HOST']. $ pathMatches [0]; Спасибо! –

0

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

<?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] . "/"; 
} 

Результат:

enter image description here

Смежные вопросы