url ve e-posta regex sorunlar metin arama

1 Cevap php

Ben regexlib aldığım düzenli ifadeler ile ilgili sorunlar yaşıyorum. Ben bazı metin üzerinde preg_replace () yapmak ve kaldırmak / e-posta adreslerini ve URL'leri (http / https / ftp) değiştirmek istiyoruz çalışıyorum.

Ben var duyuyorum kodu:

$sanitiseRegex = array(
    'email' => /'^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/',
    'http' => '/^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$/',        
);

$replace = array(
    'xxxxx',
    'xxxxx'
);

$sanitisedText = preg_replace($sanitiseRegex, $replace, $text);

Ancak ben şu hatayı alıyorum: Unknown modifier '/' ve $sanitisedText null.

Herkes yapıyorum ya da neden regex başarısız ne ile sorun görüyor musunuz?

Teşekkürler

1 Cevap

Bir başlangıç ​​için, e-posta dize yanlış açıldı:

'email' => /'^([a-zA-Z0-9_\-\.
// should be
'email' => '/^([a-zA-Z0-9_\-\.

Diğer problem maç için bir karakter olarak / kullanarak ve start / regex onları kaçan olmadan, URL regex sona kullanıyor olmasıdır. Sadece regex start / sonunu belirtmek için farklı bir karakteri, yani kullanmak için basit çözüm:

'http' => '@^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$@'

Ne oluyor bu olduğunu görür '^(http|https|ftp)\:' regex gibi, o seçenekler arıyor başlar. Regex ve 'end' den sonra ilk karakteri geçersiz bir seçenek, dolayısıyla hata mesajı başka '/' hangi.

EDIT: şey hızlı sorunu yeniden düzeltmek olabilir: eşleşen değil. Bunun yerine şunu deneyebilirsiniz:

'http' => '@^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?(/[a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~]*)?$@'