本文整理汇总了PHP中DocumentManager::parse_HTML_attributes方法的典型用法代码示例。如果您正苦于以下问题:PHP DocumentManager::parse_HTML_attributes方法的具体用法?PHP DocumentManager::parse_HTML_attributes怎么用?PHP DocumentManager::parse_HTML_attributes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DocumentManager
的用法示例。
在下文中一共展示了DocumentManager::parse_HTML_attributes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get_resources_from_source
/**
* Gets the list of included resources as a list of absolute or relative paths of
* resources included in the current item. This allows for a better SCORM export.
* The list will generally include pictures, flash objects, java applets, or any other
* stuff included in the source of the current item. The current item is expected
* to be an HTML file. If it is not, then the function will return and empty list.
* @param string type (one of the Chamilo tools) - optional (otherwise takes the current item's type)
* @param string path (absolute file path) - optional (otherwise takes the current item's path)
* @param int level of recursivity we're in
* @return array List of file paths. An additional field containing 'local' or 'remote' helps determine if the file should be copied into the zip or just linked
*/
public function get_resources_from_source($type = null, $abs_path = null, $recursivity = 1)
{
$max = 5;
if ($recursivity > $max) {
return array();
}
if (!isset($type)) {
$type = $this->get_type();
}
if (!isset($abs_path)) {
$path = $this->get_file_path();
$abs_path = api_get_path(SYS_COURSE_PATH) . api_get_course_path() . '/' . $path;
//echo "Abs path coming from item : ".$abs_path."<br />\n";
}
/*
else {
echo "Abs path coming from param: ".$abs_path."<br />\n";
}
*/
//error_log(str_repeat(' ',$recursivity).'Analyse file '.$abs_path, 0);
$files_list = array();
$type = $this->get_type();
switch ($type) {
case TOOL_DOCUMENT:
case TOOL_QUIZ:
case 'sco':
// Get the document and, if HTML, open it.
if (is_file($abs_path)) {
// for now, read the whole file in one go (that's gonna be a problem when the file is too big).
$info = pathinfo($abs_path);
$ext = $info['extension'];
switch (strtolower($ext)) {
case 'html':
case 'htm':
case 'shtml':
case 'css':
$wanted_attributes = array('src', 'url', '@import', 'href', 'value');
// Parse it for included resources.
$file_content = file_get_contents($abs_path);
// Get an array of attributes from the HTML source.
$attributes = DocumentManager::parse_HTML_attributes($file_content, $wanted_attributes);
// Look at 'src' attributes in this file
foreach ($wanted_attributes as $attr) {
if (isset($attributes[$attr])) {
// Find which kind of path these are (local or remote).
$sources = $attributes[$attr];
foreach ($sources as $source) {
// Skip what is obviously not a resource.
if (strpos($source, "+this.")) {
continue;
}
// javascript code - will still work unaltered.
if (strpos($source, '.') === false) {
continue;
}
// No dot, should not be an external file anyway.
if (strpos($source, 'mailto:')) {
continue;
}
// mailto link.
if (strpos($source, ';') && !strpos($source, '&')) {
continue;
}
// Avoid code - that should help.
if ($attr == 'value') {
if (strpos($source, 'mp3file')) {
$files_list[] = array(substr($source, 0, strpos($source, '.swf') + 4), 'local', 'abs');
$mp3file = substr($source, strpos($source, 'mp3file=') + 8);
if (substr($mp3file, 0, 1) == '/') {
$files_list[] = array($mp3file, 'local', 'abs');
} else {
$files_list[] = array($mp3file, 'local', 'rel');
}
} elseif (strpos($source, 'flv=') === 0) {
$source = substr($source, 4);
if (strpos($source, '&') > 0) {
$source = substr($source, 0, strpos($source, '&'));
}
if (strpos($source, '://') > 0) {
if (strpos($source, api_get_path(WEB_PATH)) !== false) {
// We found the current portal url.
$files_list[] = array($source, 'local', 'url');
} else {
// We didn't find any trace of current portal.
$files_list[] = array($source, 'remote', 'url');
}
} else {
$files_list[] = array($source, 'local', 'abs');
}
//.........这里部分代码省略.........