Skip to main content

In this instance, I'll check the beginning of the string.  I want to focus on the href's that start with /node/.  Which has been added using the variable $catchPhrase.

Using the Drupal service path_alias to return the node.nid as follows:

    /**
     * Load the node nid from the URL alias.
     *
     * @param string $url URL string.
     *
     * @return any
     */
    public function getNodeNidFromAlias($url, $phrase)
    {
        // Default values.
        $nid = null;
        $path = \Drupal::service('path_alias.manager')->getPathByAlias($url);
        $strlen = strlen($phrase);
        if (substr($path, 0, $strlen) === $phrase) {
            $nid = substr($path, $strlen, strlen($path) - $strlen);
        }

        return $nid;
    }

 

If you are using PHP8, then instead you can use

str_starts_with('https://www.codebales.com', 'https')

 

How was the getNodeNidFromAlias() used?

The initial call came from

$nid = $this->helper->getNodeNidFromAlias($link['href'], '/node');
$type = $this->helper->getTypeFromNid($nid);

The section of the helper file was 


    /**
     * Load the node nid from the URL alias.
     *
     * @param string $url URL string.
     *
     * @return any
     */
    public function getNodeNidFromAlias($url, $phrase)
    {
        // Default values.
        $nid = null;
        $path = \Drupal::service('path_alias.manager')->getPathByAlias($url);
        $strlen = strlen($phrase);
        if (substr($path, 0, $strlen) === $phrase) {
            $nid = substr($path, $strlen, strlen($path) - $strlen);
        }

        return $nid;
    }

    /**
     * Get the node type.
     *
     * @param any $nid Node nid.
     *
     * @return any
     */
    public function getTypeFromNid($nid)
    {
        if (is_null($nid)) {
            return null;
        }
        $node = \Drupal\node\Entity\Node::load($nid);

        return $node->getType();
    }

 

Related articles