Drupal 模块字段和提要,模块生成数据
在保存字段之前修剪字段有问题。我想将Drupal 模块字段和提要,模块生成数据,drupal,field,Drupal,Field,在保存字段之前修剪字段有问题。我想将substr()或regex()与preg\u match()一起使用。我已经构建了一个Drupal7模块,但它根本不能工作。我曾尝试在feeds tamper模块中使用trim插件,但它似乎不起作用。我使用的数据来自Google Alerts的提要。我已经发布了这个问题 这就是我到目前为止所做的,我知道我的正则表达式是错误的;我试着让它做任何事情,只是想看看我是否能让它工作,但我对如何将这种类型的函数添加到Drupal模块感到非常困惑 function su
substr()
或regex()
与preg\u match()
一起使用。我已经构建了一个Drupal7模块,但它根本不能工作。我曾尝试在feeds tamper模块中使用trim插件,但它似乎不起作用。我使用的数据来自Google Alerts的提要。我已经发布了这个问题
这就是我到目前为止所做的,我知道我的正则表达式是错误的;我试着让它做任何事情,只是想看看我是否能让它工作,但我对如何将这种类型的函数添加到Drupal模块感到非常困惑
function sub_node_save() {
$url = $node->field_web_screenhot['und'][0]['url'];
$url = preg_match('~^(http|ftp)(s)?\:\/\/((([a-z0-9\-]*)(\.))+[a-z0-9]*)($|/.*$)~i',$url );
$node->field_web_screenhot['und'][0]['url'] =$url;
return ;
}
我使用Devel模块获取字段
如果有一个使用<代码>子()/<代码>的简单方法,我会考虑这个或别的什么东西。
基本上,我只想取消对URL的Google重定向,因此它只是网站的基本URL。根据您的问题和以后的评论,我建议使用node_pressave hook(http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook\u node\u presave/7)用于此。 它在insert(new)和update ops之前调用,因此如果需要,您将需要额外的验证来防止它在节点更新上执行
<?php
function MYMODULE_node_presave($node) {
// check if nodetype is "mytype"
if ($node->type == 'mytype'){
// PHP's parse_url to get params set to an array.
$parts = parse_url($node->field_web_screenhot['und'][0]['url']);
// Now we explode the params by "&" to get the URL.
$queryParts = explode('&', $parts['query']);
$params = array();
foreach ($queryParts as $param) {
$item = explode('=', $param);
$params[$item[0]] = $item[1];
}
//valid_url validates the URL (duh!), urldecode() makes the URL an actual one with fixing "//" in http, q is from the URL you provided.
if (valid_url(urldecode($parms['q']))){
$node->field_web_screenhot['und'][0]['url'] = urldecode($parms['q']);
}
}
}
-函数中没有参数?-将$node对象作为引用发送(&$node)。-另外,你能用一些例子解释一下在preg_比赛后你需要保存什么吗?嗨,好吧,我不知道没有任何争论还在继续。我有一个来自google alerts的rss提要,它为进入链接模块字段的网站生成url。我想要PrggMatter来识别中间的基本URL,而不是谷歌前面的重定向信息和后面的字符串。我想删除我不需要的东西。谷歌警报URL看起来像这样。我想在节点保存中间的URL。http%3A//www.rollingstone.com/music/news/chili-peppers-neil-young-jack-white-black-keys-to-headline-austin-city-limits-fest-2012-20120522非常感谢您的帮助!!!!!这有意义吗?我可以提供更多信息来帮助回答这个问题。再次感谢。好的,我要试试这个。我明白你的意思了。我也认为普雷萨夫。如果我能让它工作,我会向你汇报。再次感谢你的帮助!也许一个正则表达式可以快速/有效/减少内存,但我对正则表达式了解不多。谷歌和你会发现很多正则表达式模式可以从URL获取特定的参数。你提供的代码是否对URL进行了任何修剪,还是仍然需要添加?修剪(urldecode($parms['q'])不会有什么不同,但如果你愿意,可以使用上面的ti替换urldecode($parms['q'])当我将代码添加到模块中时,我现在遇到了一些错误,请查看这些错误,我非常感谢!谢谢!!!!