给定HTML字符串,查找浮动<>的最佳方法是什么

时间:2019-09-28 04:44:14

标签: ruby mechanize

给出一个HTML字符串:

myhtml = "<title> my title </title>"

如果存在浮动/未转义的true<以及令人反感的字符本身,如何编写返回>的函数?例子:

myhtml = "<title> my title </title>"
hasFloating(myhtml) => false

myhtml = "<title> < </title>"
hasFloating(myhtml) => true, <

myhtml = "<title> > </title>"
hasFloating(myhtml) => true, >

请记住,此字符串可能是一个巨大的HTML代码,其中包含多个元素。我还可以通过一个函数检查是否存在未转义的字符,第二个函数返回违规字符本身

编辑:为了记录,我也在该项目中使用了mechanize宝石

3 个答案:

答案 0 :(得分:0)

如果您只想检查是否有一个未闭合的尖括号,则不需要精美的宝石。
您可以只使用import { mapActions, mapGetters } from "vuex"; export default { name: "AddTask", data() { return { taskName : this.task ? this.task.name : null, description : this.task ? this.task.description : null, }; }, computed: mapGetters(['task']), };

`$client = new Client();
 $client->setDefaultOption('headers', array(
   'Authorization' =>  'Bearer '.$token,
 ));`

答案 1 :(得分:0)

由于编写HTML解析器本身就是一个项目,所以我不打算讨论HTML部分。

您可以通过简单地返回一个数组来返回多个值。

def hasFloating(html)
  # extract a < or > character surrounded by two spaces
  char = html[/(?<= )[<>](?= )/]
  [!!char, char] # !!char converts char into a boolean
end

然后使用array decomposition提取值:

bool, char = hasFloating("<title> my title </title>") # bool = false, char = nil
bool, char = hasFloating("<title> < </title>")        # bool = true,  char = "<"
bool, char = hasFloating("<title> > </title>")        # bool = true,  char = ">"

答案 2 :(得分:0)

我认为我使用nokogiri宝石找到了答案:

htmlStr = Nokogiri::HTML(html).text
# check for < or > in htmlSTR

基本上,它会解析HTML并删除所有标签:

html = <title> < </title>
# parse with nokogiri
=> " < "

然后可以使用哪个检查浮动<>。

相关问题