我遇到以下行为:
$xml_string1 = "<person><name><![CDATA[ Someone's Name ]]></name></person>";
$xml_string2 = "<person><name> Someone's Name </name></person>";
$person = new SimpleXMLElement($xml_string1);
print (string) $person->name; # Someone's Name
$person = new SimpleXMLElement($xml_string2);
print (string) $person->name; # Someone's Name
$person = new SimpleXMLElement($xml_string1, LIBXML_NOCDATA);
print (string) $person->name; # Someone's Name
Run Code Online (Sandbox Code Playgroud)
php文档说NOCDATA"将[CD] CDATA合并为文本节点".对我来说,这意味着CDATA将被视为与文本节点相同 - 或者第三个示例的行为现在将与第二个示例相同.
我无法控制XML(它是来自外部源的提要),否则我只是删除CDATA标记,因为它什么也不做,并且破坏了我想要的行为.
为什么上面的例子表现得如此?有没有办法让SimpleXML以与处理文本节点相同的方式处理CDATA节点?"合并CDATA作为文本节点"实际上做了什么,因为我似乎不理解该选项?
在我提取数据之后,我正在解码,但上面的例子对我来说仍然没有意义.
我知道rails会自动转义像'<'或'&'这样的字符,但这对于彼此相邻的多个空格没有任何作用.我想逃避一切,包括空间.
我明白通常你不想使用 ,你应该使用css代替.但是,我正在尝试接受用户输入并显示它,因此css不可行.
例如,我有用户输入: test .当我<%=@user_input%>在视图中显示它时,额外的空格显示为单个空格(尽管它在源中正确显示).
有没有一个简单的方法来逃避空白?我应该使用h @user_input然后替换所有空格吗?
whitespace escaping ruby-on-rails html-entities ruby-on-rails-3
我有一个像这样的元组列表(字符串是填充...我的实际代码具有未知的值):
list = [
('one', 'two', 'one'),
('one', 'two', 'one', 'two', 'one'),
('one', 'two', 'one', 'two', 'one', 'two', 'one'...)
]
Run Code Online (Sandbox Code Playgroud)
我想在<strong> </strong>标签中包装每个其他字符串(在此示例中为"两个"字符串).我无法做到令人沮丧,'<strong>'.join(list)因为其他人都没有/.这是我能想到的唯一方法,但是使用旗帜困扰着我...而且我似乎无法在谷歌机器上找到关于这个问题的任何其他内容.
def addStrongs(tuple):
flag = False
return_string = ""
for string in tuple:
if flag :
return_string += "<strong>"
return_string += string
if flag :
return_string += "</strong>"
flag = not flag
return return_string
formatted_list = map(addStrongs, list)
Run Code Online (Sandbox Code Playgroud)
我很抱歉,如果这是错误的,我仍然是python的新手.有一个更好的方法吗?我觉得这在其他方面也很有用,就像添加左/右引号一样.