Bir find / replace fonksiyonunu test ederken ben bir hafıza sorunu yaşıyorum.
Arama tabidir ki:
$subject = "I wrote an article in the A+ magazine. It'\s very long and full of words. I want to replace every A+ instance in this text by a link to a page dedicated to A+.
";
bulunabilir dize:
$find='A+'; $find = preg_quote($find,'/');
replace fonksiyonu geri arama:
function replaceCallback($match) { if (is_array($match)) { return '<a class="tag" rel="tag-definition" title="Click to know more about ' .stripslashes($match[0]) . '" href="?tag=' . $match[0]. '">' . stripslashes($match[0]) . '</a>'; } }
ve çağrı:
$result = preg_replace_callback($find, 'replaceCallback', $subject);
Şimdi, tam aranan model veritabanından çekilmektedir. Şu an itibariyle, o:
$find = '/(?![^<]+>)\b(voice recognition|test project reference|test|synesthesia|Superflux 2007|Suhjung Hur|scripts|Salvino a. Salvaggio|Professional Lighting Design Magazine|PLDChina|Nicolas Schöffer|Naziha Mestaoui|Nabi Art Center|Markos Novak|Mapping|Manuel Abendroth|liquid architecture|LAb[au] laboratory for Architecture and Urbanism|l'Arca Edizioni|l' ARCA n° 176 _ December 2002|Jérôme Decock|imagineering|hypertext|hypermedia|Game of Life|galerie Roger Tator|eversion|El Lissitzky|Bernhard Tschumi|Alexandre Plennevaux|A+)\b/s';
(Bulursa ve değiştirilmesi) Bu $ find model daha sonra 7 mysql tablolar genelinde 23 sütunlarda aranacaktır.
Yerine preg_replace_callback ve önerilen preg_replace () () kullanarak bellek sorunu çözmüş gibi görünüyor, ama ben yolda yeni sorunlar yaşıyorum: preg_replace tarafından döndürülen konu () içerik çok eksik ...
GÜNCELLEME:
the content loss is due to using preg_quote($find,'/'); It now works, except for... 'A+' which becomes 'A ' after the process.