PHP Regex Soru

3 Cevap php

Ben PHP kullanarak bir uygulama geliştiriyorum ama ben normal ifadeler için yeni, benim soruna bir çözüm bulamadı. Ben bunun için bir preg_match yazdım, bir bağlantı ile # kelimenin tüm tekrarlarını değiştirmek istiyorsanız:

$text=preg_replace('~#([\p{L}|\p{N}]+)~u', '<a href="/?aranan=$1">#$1</a>', $text);

Sorun bu normal bir ifade gibi de html karakter kodlarını maçlar olduğunu

&#039;

ve bozuk çıkış verir. Ben ile başlayan sözcükleri & # dışlamak gerekir ama bunu nasıl bilmiyorum düzenli ifadeler kullanarak.

Yardımlarınız için teşekkürler.

3 Cevap

'~(?<!&)#([\p{L}|\p{N}]+)~u'

Bu olumsuz Geriye bakan savı: http://www.php.net/manual/en/regexp.reference.assertions.php

& Öncesinde değil Maçlar # sadece

http://gskinner.com/RegExr/

bu online düzenli ifade kurucusu. Onlar kullanmak istediğiniz her türlü bayrak için açıklama var .. ve örnek metinde vurgulanan sonuç göreceksiniz.

ve evet kullanmak [a-Za-z]

Eğer düzenli ifade tablosunda bir [A-Za-z] kural eklemek gerekir böylece harf ve hiçbir numaralara sınırlar yalnızca kendisi.

I will edit with an example later on.