[Ve] bir regex özel karakterlerdir. Onlar bir maç karakterleri listelemek için kullanılır. [a-z] "a" ve "z" arasında herhangi bir küçük harf eşleşir. [03b], bir "0", "3", ya da "b" ile eşleşir. Karakterleri eşleştirmek için "[" ve "]", siz onları kaçmak zorunda önceki \.
Sizin kodu şu anda (eğer netlik için bunları yazdığınız düzenden yeniden düzenlenebilir) "boş bir dize ile [](). herhangi bir karakteri değiştirmek" diyor.
Açgözlü maçı:
preg_replace('/\[.*\]/', '', $str); // Replace from one [ to the last ]
Bir açgözlü maç birden [s ve] maç s olabilir. Bu ifade an example [of "sneaky"] text [with more "sneaky"] here almak ve an example here haline çevirmek istiyorsunuz.
Perl olmayan açgözlü maç (büyük olasılıkla açgözlü olmak istemiyorum) için bir sözdizimi vardır:
preg_replace('/\[.*?\]/', '', $str);
Açgözlü olmayan maçlar mümkün olduğunca az karakterleri yakalamaya çalışın. Aynı örneği kullanarak: an example [of "sneaky"] text [with more "sneaky"] here olur an example text here.
Sadece] takip eden ilk kadar:
preg_replace('/\[[^\]]*\]/', '', $str); // Find a [, look for non-] characters, and then a ]
Bu daha açık, ama okumak zordur. Aynı örnek metni kullanarak, olmayan açgözlü ifade çıktı almak istiyorum.
Boşluk ile açıkça bu anlaşma hiçbiri unutmayın. Her iki tarafında [ve] üzerine alanlarda kalacaktır.
Ayrıca tüm bu biçimlendirilmiş giriş için başarısız olabilir unutmayın. Maçlar olmadan birden [s ve] s şaşırtıcı bir sonuca neden olabilir.