Parhs Posted December 15, 2008 Share Posted December 15, 2008 Hello i am trying to remove a custom tag from the file but it doesnt work... example jfsajdfjsdlfdsa<if test=0>word</if>fejjkfewkfjewkfjkewjfk should remove all the <if test=0>word</if> i tried many things..This for example scr*s the output.It prints nothing... echo preg_replace("/<if test=0>(.)*<\/if>/m","","<if test=0>pahoulo</if> <if test=1>pahoulo</if>"); Please help.. Link to comment https://forums.phpfreaks.com/topic/137120-remove-only-a-tag-and-all-its-contents/ Share on other sites More sharing options...
.josh Posted December 16, 2008 Share Posted December 16, 2008 /<if.*?if>/ edit: Oh my bad. I guess I read that wrong or maybe you could have been clearer or both. Didn't notice you wanted to differentiate test=0 from test=1 Problem with your regex is that your * quantifier is being greedy and not stopping until the last </if>. You need to tell it to not be greedy and stop gobbling up stuff when it reaches first match. You do that by following it with a question mark ?. Also, you do not need parenthesis around the dot, since it's only one character and you don't need to capture it. /<if test=0>.*?<\/if>/m Link to comment https://forums.phpfreaks.com/topic/137120-remove-only-a-tag-and-all-its-contents/#findComment-716328 Share on other sites More sharing options...
Parhs Posted December 16, 2008 Author Share Posted December 16, 2008 Thank you for the reply.That works. But i need some further help.. I want to replace all the tags <if test=0>content</if> with nothing.That means i want to erase them. If <if test=1>content</if> then replace that with content. Your regex works fine but if there are nested tags it becomes a mess. <if test=1>pasok <if test=0>b</if> <if test=1>a</if> s</if> So the only solution i think is to replace the most inner tags first and repeat the preg_replace. But i cant find any good regex. echo preg_replace("/<if test=0>(.)*?(?!<if)(.)*?<\/if>/s","",$pap,1); this for example wouldnt work because for example <if test=0>b</if> wouldnt match because after that there is an <if test=1>a</if> any help apreciated Link to comment https://forums.phpfreaks.com/topic/137120-remove-only-a-tag-and-all-its-contents/#findComment-716508 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.