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.