Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从字符串创建链接_Ruby On Rails_Ruby_Ruby On Rails 3_Email_Url - Fatal编程技术网

Ruby on rails 从字符串创建链接

Ruby on rails 从字符串创建链接,ruby-on-rails,ruby,ruby-on-rails-3,email,url,Ruby On Rails,Ruby,Ruby On Rails 3,Email,Url,我使用的是RubyonRails 3,我想从字符串中提取第一个URL或电子邮件地址,然后使用生成的字符串(示例:“http://www.test.com,“邮件收件人:test@test.com“,…)作为HTML中使用的href属性值 我如何才能以最安全的方式进行操作? 附言:但这并不能满足我的需要。好的,您可能不想要正则表达式,但它可以工作,您可以将它用作帮助器 URL的代码: str = "http://someurl.com/" str.scan(/http:\/\/([^\/]*)/)

我使用的是RubyonRails 3,我想从字符串中提取第一个URL或电子邮件地址,然后使用生成的字符串(示例:“
http://www.test.com
,“
邮件收件人:test@test.com
“,…)作为HTML
中使用的
href
属性值

我如何才能以最安全的方式进行操作?


附言:但这并不能满足我的需要。

好的,您可能不想要正则表达式,但它可以工作,您可以将它用作帮助器

URL的代码:

str = "http://someurl.com/"
str.scan(/http:\/\/([^\/]*)/)
电子邮件代码:

str = "mailto:someemail@email.com"
str.scan(/mailto:([^ ]*)/)
总而言之:

result_array = str.scan(/mailto:([^ ]*)|http:\/\/([^\/]*)/)
if result_array.length > 0
  result = result[0][0] unless empty? result[0][0] 
  result = result[0][1] unless empty? result[0][1] 
end

好的,您可能不需要正则表达式,但它可以工作,您可以将其用作帮助器

URL的代码:

str = "http://someurl.com/"
str.scan(/http:\/\/([^\/]*)/)
电子邮件代码:

str = "mailto:someemail@email.com"
str.scan(/mailto:([^ ]*)/)
总而言之:

result_array = str.scan(/mailto:([^ ]*)|http:\/\/([^\/]*)/)
if result_array.length > 0
  result = result[0][0] unless empty? result[0][0] 
  result = result[0][1] unless empty? result[0][1] 
end

如果只需要字符串中的第一个链接,可以使用match。此外,您希望使用非贪婪匹配:

str.match(/mailto:([^ ]*?( |$|\n))|http:\/\/([^\/]*?)( |$|\n)/) 
如果愿意,您可以添加更多有效电子邮件地址检查等


获得字符串后,可以使用“自动链接”从中创建链接。

如果只需要字符串中的第一个链接,可以使用“匹配”。此外,您希望使用非贪婪匹配:

str.match(/mailto:([^ ]*?( |$|\n))|http:\/\/([^\/]*?)( |$|\n)/) 
如果愿意,您可以添加更多有效电子邮件地址检查等


获得字符串后,可以使用auto_link从中创建链接。

域名和主机名中可以包含
-
字符,电子邮件用户名具有特定于系统的定义。这里有一个尝试共享DNS解析的Hull matcher

/((https*\:\/\/)|(mailto:[^@]+@))(\/*[\w\-rb.]+)*/

域名和主机名中可以包含
-
字符,电子邮件用户名具有特定于系统的定义。这里有一个尝试共享DNS解析的Hull matcher

/((https*\:\/\/)|(mailto:[^@]+@))(\/*[\w\-rb.]+)*/

哦,对不起,你写的最安全的地方我读得最快,但答案仍然有效对不起,
null?
?你说的这个神奇的方法是什么?我想到了“nil”并写了“null?”,但显然我把它和“empty”方法混淆了。抱歉,编辑答案哦,抱歉,你写的最安全,我读得最快,但答案仍然有效对不起,
null?
?你说的这个神奇的方法是什么?我想到了“nil”并写了“null?”,但显然我把它和“empty”方法混淆了。很抱歉,正在编辑答案