2015-01-02 99 views
3

我正在学习MySQL并使用phpMyAdmin在我的Wordpress数据库中为有数千种产品的商店进行更改。在MySQL中,如何从长文本字符串中提取URL?

我试图做一个快速更新,我拉出一个URL并将其粘贴到我想添加的短代码中。

目前,我的表格中的每条记录都有一些其他文本内的某个地方。

<input type="hidden" name="prtks" value="http://domainname/folder/filename.mp3"/> 

我想保持这一点,并同场

[sc_embed_player_template1 fileurl="url from above"/"] 

这是相当棘手,因为我知道我可以找到通过计算字符的子内添加到每个记录,但有没有办法从http一路拉出完整的URL到最后的.mp3?

非常感谢!

+0

只需使用搜索和替换插件对数据库进行更改即可。 –

回答

0

这不是MySQL的,但如果我正确地理解你的问题,你似乎就像你做类似下面的谈论一个PHP文件中这样做:

<?php 
    $url = '<input type="hidden" name="prtks" value="http://domainname/folder/filename.mp3"/>'; 
    $parts = explode('"', $url); 
    echo 'URL: '.$parts[5]; 
?> 

它使用PHP explode()打破字符串分解成“字符数组。

那么你可以只回声第6部分($parts[5]

0

为什么不直接使用一个简单的正则表达式来提取网址?

$str = '<input type="hidden" name="prtks" value="http://domainname/folder/filename.mp3"/>'; 
preg_match_all('/\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i', $str, $match, PREG_PATTERN_ORDER); 
var_dump($match[0][0]); 
// string 'http://domainname/folder/filename.mp3' (length=37) 
0
<?php 

function urltxt($string) 
{ 

$regex = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i"; ///(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; 
preg_match_all($regex, $string, $matches); 
    return $matches[0]; 
} 

$url = urltxt($sqlresult); 
echo $url[0]; 

//this way its more easier i guess 
?> 
0

如果文件扩展名都是3个字符,你可以使用正则表达式像http://*\.{3}查找网址,但除非他们有某种分隔符,这将是很难找到。您可以尝试http://*\.(mp3|html|gif|png|exe|php|aif|wav)并列出所有可能的扩展名(如果它们不同)。您还可以尝试仅列出超过3个字符的扩展名:http://*\.({3}|html|jpeg|aiff|torrent)