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

Andrew Fletcher11 Nov 2024
How to resolve the "filemtime(): stat failed" warning in Drupal 10 / 11
If you’re running a website on Drupal 10.x or 11.x, you might encounter a warning like this in your logs:> "Warning: filemtime(): stat failed for sites/default/files/php/twig/67312f8c6d7ee_paragraph.html.twig_oBJkUYn5Hj1Gltpsh3AXvAcSC/ErOs4_HSnzbWqmYFWDDuM3htp2ANqUUtX84lTbfu2Bg.php in...
Andrew Fletcher10 Sep 2024
Resolving PHP GD library issues in Drupal
IntroductionFor a while now, one persistent issue has been bugging me: a warning on Drupal's 'status report' page that reads:GD librarylibrary bundled (2.1.0 compatible)Supported image file formats: GIF, PNG.Unsupported image file formats: JPEG, WEBP.Check the PHP GD installation documentation if...