MySQL搜索和替换(类似文本 - 不完全)

时间:2014-09-05 12:56:12

标签: php sql replace

我想替换它:

~ <a href="xxxx">Download</a>

使用:

<div class="down"> ~ <a href="xxxx">Download</a> </div>

大约有300-350个地方DOWNLOAD字重复出现。 xxx不是常数,每次都会改变,超链接每次都会改变......

是否可以使用任何SQL查询执行此操作?如果它在SQL中不可能,可以在php中完成吗?

4 个答案:

答案 0 :(得分:1)

怎么样:

UPDATE MyTable 
SET MyField = REPLACE(MyField, 
                      '~ <a href="xxxx">Download</a>', 
                      '<div class="down"> ~ <a href="xxxx">Download</a> </div>')

好的,如何更换"xxxx"周围的所有内容:

UPDATE MyTable 
SET MyField = 
REPLACE(
  REPLACE(MyField, 
          '~ <a href=', 
          '<div class="down"> ~ <a href'),  
  '</a>', 
  '</a> </div>')

答案 1 :(得分:1)

使用str_replace()

的PHP方法怎么样?
<?php

$string = '~ <a href="xxxx">Download</a>';

$string = str_replace('~ <a href="xxxx">Download</a>', '<div class="down"> ~ <a href="xxxx">Download</a> </div>', $string);

echo $string;

Echo在HTML源代码中的以下内容为:

<div class="down"> ~ <a href="xxxx">Download</a> </div>

此外:

$link = "page.php";

$string = '~ <a href="xxxx">Download</a>';

$string = str_replace('~ <a href="xxxx">Download</a>', '<div class="down"> ~ <a href="'.$link.'">Download</a></div>', $string);

echo $string;

HTML来源:

<div class="down"> ~ <a href="page.php">Download</a></div>

答案 2 :(得分:0)

从表中获取行并使用以下内容。

foreach($result as $row)
{
   echo '<div class-="down"><a href = "'. $row['xxxx'] .'" >Download</a></div>';
}

答案 3 :(得分:0)

MySQL有一个REGEXP运算符,但它仅适用于“匹配”,而不适用于替换。

这样的表达式:

REPLACE(
  REPLACE(col, 
    , '~ <a href="'
    , '<div class="down"> ~ <a href="'
  )
  , '">Download</a>'
  , ">Download</a> </div>'
)

可能会达到之后的结果,但两个替换将独立完成。也就是说,字符串中 '~ <a href="' 的所有实例,而不仅仅是那些后跟 Download 的实例。

我强烈怀疑这对你不起作用,因为我怀疑你需要执行此操作的列包含这些相同字符串的其他实例,这些实例不需要替换。