php: Düzenli ifade via kelimeleri silme

3 Cevap php

benim komut ifadeleri şu türünü silmek istiyorum.

<a any text here>nothing or space here</a>

i can do it by three functions, but i think there is a way shorter. could you help me? thanks in advance

3 Cevap

preg_replace('/<a(.*?)>\s*<\/a>/', '', $str) çalışacak mı?

EDIT: Alan Moore hakkıdır.

Alınan http://www.regular-expressions.info/php.html:

mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit]) değiştirme dizesi ile değiştirilir konu dize regex desen tüm maçları ile bir dize döndürür.

En çok sınır değiştirmeleri yapılır. Bir önemli fark, tüm parametreler, sınırın dışında, diziler yerine dizeleri olabilir olmasıdır.

Bu durumda, preg_replace işini aynı anda dizilerde unsurları üzerinde yineleme, birden çok kez yok. Ayrıca, diğerleri için bazı parametreler için dizeleri ve diziler kullanabilirsiniz. Sonra fonksiyon diziler üzerinde yineleme ve her yineleme için aynı dizeleri kullanır. Desen ve değiştirme bir dizi kullanarak, arama bir dizi yapmak ve tek bir konu dize işlemleri yerine sağlar. Konu dizge için bir dizi kullanarak, aynı aramayı gerçekleştirmek ve birçok konu dizeleri değiştirme işlemi sağlar.

$text = '<a any text here>nothing or space here</a>';
$rep = '';
$pat = '|<a[^>]*>\S*</a>|';
echo preg_replace($pat,$rep,$text);

EDIT: yanlış bir

$text = '<a any text here>nothing or space here</a>';
$rep = '<a>\1</a>';
$pat = '|<a[^>]*>([^<]*)</a>|';
echo preg_replace($pat,$rep,$text);