regex - How to replace http for https in string but only on specific domains in PHP -


i need parse strings of html content , possible replace urls images on other domains https wherever http. issue not external domains support https can't blanket replace http https.

so want list of domains know work https.

there small added complication search has work domains irrelevant if www. added or not.

using example given @wiktor have close want, needs reversing run replace when match found, not when match isn't found code functions.

/http(?!:\/\/(?:[^\/]+\.)?(?:example\.com|main\.com)\b)/i 

i believe can use

$domains = array("example.com", "main.com"); $s = "http://example.com http://main.main.com http://let.com"; $re = '/http(?=:\/\/(?:[^\/]+\.)?(?:'        . implode("|", array_map(function ($x) {              return preg_quote($x);            }, $domains))        . ')\b)/i';  echo preg_replace($re, "https", $s); // => https://example.com https://main.main.com http://let.com 

see ideone demo

the regex matches:

  • http - http if followed by...
  • (?= - start of positive lookahead
    • :\/\/ - :// literal substring
    • (?:[^\/]+\.)? - optional sequence of 1+ chars other / , .
    • (?: + implode code - creates alternation group escaping individual literal branches (to match 1 of alternatives, example or main, etc.)
    • ) - end of alternation group
  • \b - word boundary
  • ) - end of lookahead
  • /i - case insenstive modifier.

Comments

Popular posts from this blog

sql - invalid in the select list because it is not contained in either an aggregate function -

Angularjs unit testing - ng-disabled not working when adding text to textarea -

How to start daemon on android by adb -