def find_and_replace_node_content(node, env, need):
new_children = []<EOL>if not node.children:<EOL><INDENT>if isinstance(node, nodes.Text):<EOL><INDENT>func_match = func_pattern.findall(node)<EOL>new_text = node<EOL>for func_string in func_match:<EOL><INDENT>if not is_python3:<EOL><INDENT>func_string = func_string.encode('<STR_LIT:utf-8>')<EOL><DEDENT>func_string_org = func_string[:]<EOL>func_string = func_string.replace('<STR_LIT>', '<STR_LIT:">')<EOL>func_string = func_string.replace('<STR_LIT>', '<STR_LIT:">')<EOL>func_string = func_string.replace('<STR_LIT>', '<STR_LIT:">')<EOL>func_string = func_string.replace('<STR_LIT>', '<STR_LIT:">')<EOL>func_string = func_string.replace('<STR_LIT>', '<STR_LIT:">')<EOL>func_string = func_string.replace('<STR_LIT>', '<STR_LIT:">')<EOL>func_return = execute_func(env, need, func_string)<EOL>if not is_python3:<EOL><INDENT>new_text = new_text.replace(u'<STR_LIT>'.format(func_string_org.decode('<STR_LIT:utf-8>')), func_return)<EOL><DEDENT>else:<EOL><INDENT>new_text = new_text.replace(u'<STR_LIT>'.format(func_string_org), func_return)<EOL><DEDENT><DEDENT>node = nodes.Text(new_text, new_text)<EOL><DEDENT>return node<EOL><DEDENT>else:<EOL><INDENT>for child in node.children:<EOL><INDENT>new_child = find_and_replace_node_content(child, env, need)<EOL>new_children.append(new_child)<EOL><DEDENT>node.children = new_children<EOL><DEDENT>return node<EOL>
Search inside a given node and its children for nodes of type Text,
if found check if it contains a function string and run/replace it.

:param node: Node to analyse
:return: None