PHP preg_replace 'e' değiştirici ikilemi

0 Cevap php

Ben şimdi bir kaç gün için bu ile mücadele ettik ve ben gerçekten başka birine sormak zorunda gibi görünüyor.

Bu iplik amaçlar için, burada sorun: Ben PHP'nin preg_replace ve bunun içinde bir işlevi yürütmek için 'e' değiştirici kullanarak bir dize işlemek için çalışıyorum. I [pdf]somefilename[/pdf] herhangi bir örneğini değiştirmek istiyorsanız <a href="somefilename.pdf">PDF</a> size('somefilename.pdf');

Yani, örneğin, belki [pdf]somefilename[/pdf] çıkışı (137MB) tarafından takip dosyasına bir bağlantı olur.

Nedense, ancak, (137MB) parçası yerine olması gerekiyordu nerede tüm dize beginning, koymak ediliyor. Bu preg_replace, her şeyi değerlendirirken sonra geri dönüyor ve işlevi yürüttükten ve sadece dizenin başında sonuç atıyor gibi görünüyor.

Yani olsaydı Some text blah, blah. Download the document: [pdf]somefilename[/pdf] düzenli ifade çıkışları (137MB) Some text blah, blah. Download the document: [link to document] zaman should çıkış Some text blah, blah. Download the document [link to document] (137MB).

Ben kayboldum. Google beni kurtaramazsın. Birisi yardım lütfen!

Thanks in advance, Jeff

İşte kod:

$bbcode_pdf_tag = '/\[pdf\](.*?)\[\/pdf\]/ie';
$html_pdf_tag = '"<a href=\"$1.pdf\">PDF</a>" .size("\\1.pdf")';
$decoded_data = preg_replace($bbcode_pdf_tag, $html_pdf_tag, $data);

EDIT: O boyutunu belirtmekte yarar var ()) tamamen farklı bir dosyada tanımlanır ve bu böyle strtolower (gibi bir yerleşik işlevi kullandığınızda ne görünmüyor. Dahili boyutu () fonksiyonunun tanımlanması ve preg_replace_callback kullanarak sorunu çözmüyor.

0 Cevap