Я боролся с этим в течение нескольких дней, и похоже, что мне действительно нужно спросить кого-то другого.PHP preg_replace 'e' modifier dilemma
Для целей этой темы, вот в чем проблема: я пытаюсь манипулировать строкой с использованием PHP preg_replace и модификатора 'e' для выполнения функции внутри нее. Я хочу изменить любой экземпляр [pdf]somefilename[/pdf]
на <a href="somefilename.pdf">PDF</a> size('somefilename.pdf');
Так, например, возможно, [pdf]somefilename[/pdf]
выведет ссылку на файл, за которым следует (137 МБ).
По какой-то причине, однако, часть (137 МБ) ставится на начало всей строки, а не там, где она должна быть. Кажется, что preg_replace
оценивает все, а затем возвращается и выполняет функцию и просто бросает результат в начало строки.
Так что, если у меня было Some text blah, blah. Download the document: [pdf]somefilename[/pdf]
регулярное выражение выводит (137MB) Some text blah, blah. Download the document: [link to document]
, когда он должен выход Some text blah, blah. Download the document [link to document] (137MB)
.
Я потерян. Google не может спасти меня. Кто-то, пожалуйста, помогите!
Спасибо заранее, Джефф
Вот код:
$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: Стоит отметить, что размер() определяется в совершенно другой файл, и это, кажется, не происходит, когда Я использую встроенную функцию, такую как strtolower(). Определение функции size() внутри и использование preg_replace_callback не решает проблему.
psst, размещение кода (или, по крайней мере, регулярного выражения) облегчит людям помощь вам. – CharlesLeaf
Мы не можем помочь вам, не зная, что вы делаете. Пожалуйста, действительно укажите код *. –
Пожалуйста, напишите свой запрос 'preg_replace', чтобы мы могли посмотреть. – netcoder