Essayez d'utiliser un séparateur différent, disons #
:
preg_replace('#http://|ftp://#', 'https://', $value);
ou (moins recommandé) échapper à toutes les occurrences du délimiteur dans la regex:
preg_replace('/http:\/\/|ftp:\/\//', 'https://', $value);
vous aussi recherchez le modèle http:///ftp://
ce qui n'a vraiment pas beaucoup de sens, peut-être voulez-vous dire http://|ftp://
.
Vous pouvez faire votre regex plus court:
preg_replace('#(?:http|ftp)#', 'https', $value);
Comprendre l'erreur:Unknown modifier '/'
Dans votre regex '/http:///ftp:///'
, le premier /
est considéré comme délimiteur de départ et le /
après la :
est considéré comme le délimiteur de fin. Nous savons maintenant que nous pouvons fournir un modificateur à la regex pour modifier son comportement par défaut. Certains de ces modificateurs sont:
i
: faire le cas correspondant insensible
m
: plusieurs lignes de recherche
Mais que PHP voit après le délimiteur de fermeture est un autre /
et tente d'interpréter comme un modificateur mais échoue, entraînant l'erreur.
preg_replace
renvoie la chaîne modifiée.
$value = 'http://foo.com';
$value = preg_replace('#http://|ftp://#', 'https://', $value);
// $value is now https://foo.com
premier ne fonctionne pas – James
-vous la collecte valeur de retour de 'preg_replace' comme je l'ai montré ci-dessus? – codaddict