I run a PHP script in WordPress that removes the http:
and https:
protocols from all the links, this is the full code, but here's the section that strips the protocols:
# If 'Relative' option is selected, remove domain from all internal links
if ( $this->option == 2 ) {
$website = preg_replace( '|https?:\/\/|', '', home_url() );
$links = preg_replace( '|https?:\/\/' . $website . '|', '', $links );
}
# For all external links, remove protocols
$links = preg_replace( '|https?:\/\/|', '', $links );
This works as intended. However, it also removes the protocol in text fields like so:
I'm trying to update my regex to ignore any <input>
fields so that it doesn't remove protocols. Particularly ones with the value=http:
or value=https:
From my tests:
<input type="url" value="http://example.com">
I've come up with this pattern:
<input(.*)value=["\']https?:\/\/
But I'm not sure how to implement this regex to skip over any <input>
field that match this logic. I've tried the following logic, but it didn't work:
# Skip input fields with links
if ( preg_match( '|<input(.*)value=["\']https?:\/\/|', $links ) ) {
return $links;
}
# If 'Relative' option is selected, remove domain from all internal links
if ( $this->option == 2 ) {
$website = preg_replace( '|https?:\/\/|', '', home_url() );
$links = preg_replace( '|https?:\/\/' . $website . '|', '', $links );
}
# For all external links, remove protocols
$links = preg_replace( '|https?:\/\/|', '//', $links );