我有大量的意大利文本从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中)都欢迎
蒂姆答案 0 :(得分:0)
$sanatizedString = str_replace('- ', '', $oldString);
应该这样做。
我不知道哪些地方-[space]
你不知道要替换什么。
但是,如果你想确定,那么在该组合之前和之后都有字母可以用于正则表达式:\w- \w
(http://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 />"); }
}
如果您打算在家尝试这个,请提出建议。将更改作为新记录插入到数据库中,然后删除旧记录,否则您将遇到麻烦。