MySQL - 替换意大利文本块中的换行符

时间:2014-09-09 07:41:30

标签: php mysql replace

我有大量的意大利文本从PDF复制粘贴到MySQL中,原始版本中都有换行符。 所以我需要更换,例如:

il mer- cante belga

il mercante belga

由于我不知道如何在MySQL中执行这样的通用search/replace我已经转储数据以便在 PHP 中执行此操作,但是我可以找到实例OK:

%s/[a-z]- [a-z]/[a-z][a-z]/gc

但替换就像你刚刚结束

il mer[a-z][a-z]cante belga

所以任何建议(在MySQL或PHP中)都欢迎

蒂姆

3 个答案:

答案 0 :(得分:0)

$sanatizedString = str_replace('- ', '', $oldString);应该这样做。 我不知道哪些地方-[space]你不知道要替换什么。 但是,如果你想确定,那么在该组合之前和之后都有字母可以用于正则表达式:\w- \whttp://regexr.com/39fad)并转到preg_replace。

答案 1 :(得分:0)

使用php函数preg_replace,搜索模式"- "

$string = "il mer- cante belga";
echo preg_replace('/-\s+/', '', $string);

返回:

il mercante belga

其中' / - \ s + /'匹配空格(空格,制表符,换行符)

答案 2 :(得分:0)

问题: 如何使用换行符修复保存在MySQL DB中的意大利文本块,例如:

affront- are - > affontare

stilisti- ca - > stilistica

Alma-Tadema - > Alma- Tadema(未更改)

Agrippina - madre - > Agrippina - madre(未更改)

我通过运行处理每个实例的PHP脚本解决了这个问题。诀窍是唯一的条件是[小写字母] [连字符] [空格] [小写字母]并隔离此条件可确保正确的修订。

$sql = "SELECT * FROM [ the table ] WHERE [ there is an Italian text block with an id ] AND [ it is the unrevised version of the panel ]";

$result = mysql_query($sql);

while ($row = mysql_fetch_object($result)) {

    $id = $row->id; $string = $row->panel;

    $x = 0;

    $y = strlen($string);

    $newstring = '';

    while ($x < $y) {

        if ($string[$x] == '-' && $string[$x+1]==' ') {
            if (!ctype_lower($string[$x-1])) {  } // exclude
            elseif (!ctype_lower($string[$x+2])) { } // exclude
            else { $x++; }
        }
        else { $newstring.=$string[$x]; }
        $x++;
    }

    $xsql = "INSERT INTO [ the table ] [ the fields ] VALUES ( [ the data ] )";

    if (! $xresult = mysql_query($xsql)) { echo (" $xsql = $xresult <br />"); }
}

如果您打算在家尝试这个,请提出建议。将更改作为新记录插入到数据库中,然后删除旧记录,否则您将遇到麻烦。