Same name and namespace in other branches
  1. 4.6.x includes/bootstrap.inc \arg()
  2. 4.7.x includes/path.inc \arg()
  3. 5.x includes/path.inc \arg()
  4. 6.x includes/path.inc \arg()

Returns a component of the current Drupal path.

When viewing a page at the path "admin/structure/types", for example, arg(0) returns "admin", arg(1) returns "structure", and arg(2) returns "types".

Avoid use of this function where possible, as resulting code is hard to read. In menu callback functions, attempt to use named arguments. See the explanation in menu.inc for how to construct callbacks that take arguments. When attempting to use this function to load an element from the current path, e.g. loading the node on a node page, use menu_get_object() instead.

Parameters

$index: The index of the component, where each component is separated by a '/' (forward-slash), and where the first component has an index of 0 (zero).

$path: A path to break into components. Defaults to the path of the current page.

Return value

The component specified by $index, or NULL if the specified component was not found. If called without arguments, it returns an array containing all the components of the current path.

17 calls to arg()
aggregator_page_category in modules/aggregator/aggregator.pages.inc
Page callback: Displays all the items aggregated in a particular category.
aggregator_page_last in modules/aggregator/aggregator.pages.inc
Page callback: Displays the most recent items gathered from any feed.
aggregator_page_source in modules/aggregator/aggregator.pages.inc
Page callback: Displays all the items captured from the particular feed.
form_test_clicked_button in modules/simpletest/tests/form_test.module
Form builder to test button click detection.
forum_form_node_form_alter in modules/forum/forum.module
Implements hook_form_BASE_FORM_ID_alter() for node_form().

... See full list

File

includes/bootstrap.inc, line 3250
Functions that need to be loaded on every Drupal request.

Code

function arg($index = NULL, $path = NULL) {

  // Even though $arguments doesn't need to be resettable for any functional
  // reasons (the result of explode() does not depend on any run-time
  // information), it should be resettable anyway in case a module needs to
  // free up the memory used by it.
  // Use the advanced drupal_static() pattern, since this is called very often.
  static $drupal_static_fast;
  if (!isset($drupal_static_fast)) {
    $drupal_static_fast['arguments'] =& drupal_static(__FUNCTION__);
  }
  $arguments =& $drupal_static_fast['arguments'];
  if (!isset($path)) {
    $path = $_GET['q'];
  }
  if (!isset($arguments[$path])) {
    $arguments[$path] = explode('/', $path);
  }
  if (!isset($index)) {
    return $arguments[$path];
  }
  if (isset($arguments[$path][$index])) {
    return $arguments[$path][$index];
  }
}