HEX
Server: Apache/2.4.54 (Debian)
System: Linux a5825d2beacc 4.15.0-197-generic #208-Ubuntu SMP Tue Nov 1 17:23:37 UTC 2022 x86_64
User: root (0)
PHP: 8.1.14
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/wordpress-seo/admin/links/class-link-extractor.php
<?php
/**
 * WPSEO plugin file.
 *
 * @package WPSEO\Admin\Links
 */

/**
 * Represents the link extractor.
 */
class WPSEO_Link_Extractor {

	/** @var string */
	protected $content;

	/**
	 * Sets the content.
	 *
	 * @param string $content The content to extract the links from.
	 */
	public function __construct( $content ) {
		$this->content = $content;
	}

	/**
	 * Extracts the hrefs from the content and returns them as an array.
	 *
	 * @return array All the extracted links
	 */
	public function extract() {
		$links = array();

		if ( strpos( $this->content, 'href' ) === false ) {
			return $links;
		}

		$regexp = '<a\s[^>]*href=("??)([^" >]*?)\\1[^>]*>';

		// Used modifiers iU to match case insensitive and make greedy quantifiers lazy.
		if ( preg_match_all( "/$regexp/iU", $this->content, $matches, PREG_SET_ORDER ) ) {
			foreach ( $matches as $match ) {
				$links[] = trim( $match[2], "'" );
			}
		}

		return $links;
	}
}