Başka bir düzenli ifade e-posta adresi ayıklamak için normal ifade

3 Cevap php

Ben başka bir düzenli ifade içeren metin parçası var.

Örnek metin:

...<rege>!^.*$!mailto:asdf@adsfsdaf.com!</rege>...

Ne maç istiyorum:

mailto:asdf@adsfsdaf.com

Bu işe yaramadı:

	$patterns[] = '/<rege>!\^\.\*\$!(.*)!<\/rege>/';

Düşünceler?

3 Cevap

Var \ içeride'' Bunu gibi çift var:

$patterns[] = '/<rege>!\\^\\.\\*\\$!(.*)!<\\/rege>/';

Ben de benzer yapılar, birden çok kez bu yüzden arama metin oluşsa bile düzgün e-posta yakalamak istiyorum çünkü bu maç ungreedy olmak isteyebilirsiniz düşünüyorum:

$patterns[] = '/<rege>!\\^\\.\\*\\$!(.*?)!<\\/rege>/';

Bu deneyin:

$patterns[] = '/<rege>!\^\.\*\$!([^<]*)!<\/rege>/';

Size ters eğik kaçmak gerekir:

<?php

$sample = "<rege>!^.*$!mailto:asdf@adsfsdaf.com!</rege>";
preg_match("/<rege>!\\^\\.\\*\\$!(.*)!<\/rege>/",$sample,$matches);

print_r($matches);
?>