$i = 0;
$suggestion = 'page';
$suggestions = array();
while ($arg = arg($i++)) {
$arg = str_replace(array("/", "\\", "\0"), '', $arg);
$suggestions[] = $suggestion . '-' . $arg;
if (!is_numeric($arg)) {
$suggestion .= '-' . $arg;
}
}
i am a newbie of drupal,i can’t follow the above code well, hope someone can explain it to me.i know the first line is assign the 0 to $i,then assign ‘page’ to an array. and i know arg is an array in drupal.
for example, now the url is example.com/node/1. how to use this url to use the above code.
It looks like its purpose is to generate ID strings (probably for a CSS class) depending on paths and excludes numeric components of the path out of the generated ID.
For example,
'my/123/article'produces the ID"page-my-article".It seems this comes from a function (because the loop reads parameters using
arg()) and that it expects Drupal paths such as"node/123/edit".So the function would be called something like that:
Variables:
$iis the variable that stores the loop index$suggestionis a String that store the generated ID. It is initialized to “page” because the ID is meant to have the syntax “page-SOMETHING”.$argcomes from the while loop: it reads the parameters passed to the mystery function one by one$suggestionsis an array that contains the generated IDs, one per argument passed to the mystery function.In the loop:
The “
$arg = str_replace...” line removes unwanted characters like “\” (however that line could definitely be improved).The “
$suggestions[] = ...” line adds the ID to the array of results.The “
if (!is_numeric($arg)...” line excludes numbers from the generated ID (e.g. “my/123/article” is probably supposed to produce “my-article”)The “
$suggestion .= ...” line appends the value of “$arg” to the value of “$suggestion” and stores it in “$suggestion”But honestly, I wouldn’t advise to use that code: I doubt it works as intended given
$suggestionisn’t reinitialized at each loop so the value of the first path will get attached to the second, and to the third, and so on, and I doubt that is intentional.