PHP, MySQL, Drupal, .htaccess, Robots.txt, Phponwebsites

27 Jul 2016

Pathauto added special characters in url alias - drupal 7

    To improve SEO, we need to clean our URLs. By default in drupal, we've an option called clean URLs at the configuration. In drupal 7, we can also manage the URLs. For instance, you have a content type called services. You wanted to each service page have url like services/page-name. To do that, we've a pathauto module in drupal 7. The pathauto module allow us to manage the URLs for every content types, files, taxonomy & users and also we can remove some unnecessary words from URL like an, the and so on.

   The pathauto module can remove some unnecessary words like a, an, the and so on & also remove special characters like !, @, $ and so on. Unfortunately, it doesn't included some other symbols like copyright(©), trademark(™), registered(®) and so on. But it provide a hook to add new symbols into the punctuation settings called hook_pathauto_punctuation_chars_alter. After created a content with some symbols which are represented above, your page URL looks like below image:


Drupal 7 - remove special characters from url using pathauto module



/**
 * Implements hook_pathauto_punctuation_chars_alter().
 */
function phponwebsites_pathauto_punctuation_chars_alter(array &$punctuation) {
  $punctuation['copyright']          = array('value' => '©', 'name' => t('Copyright'));
  $punctuation['registered']         = array('value' => '®', 'name' => t('Registered trademark'));
  $punctuation['trademark']          = array('value' => '™', 'name' => t('Trademark'));
}

   After implemented above code into your module, you cold see added symbols are listing on Pathauto module's settings page at /admin/config/search/path/settings. If You didn't get these symbols, clear cache & test it again. It looks like below image:


Drupal 7 - pathauto settings after hook_pathauto_punctuation_chars_alter


Now you can create a content with those symbols. The pathauto module didn't added those symbols into the URL.

Now I hope you know how to remove some special characters from URL alias using pathauto module in drupal 7.

28 Jun 2016

PHP get particular key value from multidimensional array

You can get specific key from multidimensional array using any one of the below methods:

  1. Get Specific key value form multidimensional array using array_column:


     The array_column() returns the values from a single column in the input array. It works only from PHP version 5.5. You've a multidimentional array with details of user name and country. You tried to get the name of every array from multidimentional array. Consider the following exampale:

  <?php

    $array = array(
      0 => array(
        'name' => 'Guru',
        'country' => 'India'
      ),
      1 => array(
        'name' => 'Clark',
        'country' => 'USA'
      ),
      2 => array(
        'name' => 'Smith',
        'country' => 'United Kingdom'
      ),
      3 => array(
        'name' => 'John',
        'country' => 'USA'
      ),
    );

    $namesArray = array_column($array, 'name');
    print_r($namesArray);exit;

    When you run this program in the browser, you will get the output like below one:

    Array ( [0] => Guru [1] => Clark [2] => Smith [3] => John )

    For more details about array_coulmn, visit http://php.net/manual/en/function.array-column.php.

  2. Get Specific key value form multidimensional array using array_map:


    The array_map() applies the callback to the elements of the given arrays. It works from PHP version 4.0.6. The array_map() is alternate of array_column() in PHP

  <?php
    $namesArray = array_map(function($arr){
        return $arr['name'];
      }, $array);
    print_r($namesArray);exit;

    It will give same output as array_column. For more details about array_map, visit http://php.net/manual/en/function.array-map.php.

  3. Get Specific key value form multidimensional array using foreach loop:


  <?php
  $namesArray = array();
  foreach($array as $key => $val) {
    $namesArray[] =  $val['name'];
  }
  print_r($namesArray);exit;

  It will also give sample output as array_coulmn & array_map.

  Now I've hope you know how to get particular key value from multidimensional array in PHP.

Releated Articles: