def find_and_replace_node_content(node, env, need):
    """
    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
    """
    new_children = []
    if not node.children:
        if isinstance(node, nodes.Text):
            func_match = func_pattern.findall(node)
            new_text = node
            for func_string in func_match:
                if not is_python3:
                    func_string = func_string.encode('utf-8')
                # sphinx is replacing ' and " with language specific quotation marks (up and down), which makes
                # it impossible for the later used AST render engine to detect a python function call in the given
                # string. Therefor a replacement is needed for the execution of the found string.
                func_string_org = func_string[:]
                func_string = func_string.replace('„', '"')
                func_string = func_string.replace('“', '"')
                func_string = func_string.replace('”', '"')
                func_string = func_string.replace('”', '"')

                func_string = func_string.replace('‘', '"')
                func_string = func_string.replace('’', '"')
                func_return = execute_func(env, need, func_string)
                if not is_python3:
                    new_text = new_text.replace(u'[[{}]]'.format(func_string_org.decode('utf-8')), func_return)
                else:
                    new_text = new_text.replace(u'[[{}]]'.format(func_string_org), func_return)
            node = nodes.Text(new_text, new_text)
        return node
    else:
        for child in node.children:
            new_child = find_and_replace_node_content(child, env, need)
            new_children.append(new_child)
        node.children = new_children
    return node