Neden bu PHP preg_replace () çalışmıyor?

2 Cevap php

Ben düzeltilmesi gereken bazı kötü MySQL girişleri var. PHP bunu çalışıyorum.

What I've got:

a whole bunch of text with no numbers Entry #: 2439 . a whole bunch of text Click here to blah blah blah

What I want:

a whole bunch of text with no numbers Entry #: 2439 . a whole bunch of text <BR><A href="somepage.php?entry_no= 2439 ">Click here to blah blah blah</A>

My PHP code:

$fixed = preg_replace('/(.*)(\d*)(.*)(Click here.*)/i',"$1$2$3<BR><A href=\"somepage.php?entry_no=$2\">$4</A>",$originalData);

Nedense, bu ne olsun:

a whole bunch of text with no numbers Entry #: 2439 . a whole bunch of text <BR><A href="somepage.php?entry_no=">Click here to blah blah blah</A>

$ 2 numaralı bana ikinci kez vermiyor. Herkes herhangi bir fikir var mı?

2 Cevap

İlk maç açgözlü ediliyor çünkü bulunuyor:

Bu giriş göz önüne alındığında, burada her bölüm eşleştirme ne:

a whole bunch of text with no numbers Entry #: 2439. a whole bunch of text Click here to blah blah blah

(.*)    // "a whole bunch of text with no numbers Entry #: 2439. a whole bunch of text "
(\d*)   // "" (0 or more numbers)
(.*)    // "" (0 or more characters)

Yapmanız gereken ilk maçı olmayan açgözlü olun:

(.*?)(\d+)(.*)(Click here.*)

Bir dize içinde regex tanımlarken beri Ayrıca, size bölü kaçmak gerekir:

"/(.*?)(\\d*) ...

Bu yardımcı olabilir denetleyin http://ca.php.net/preg_replace