好吧,我知道我可以使用preg_replace从字符串中删除字母和数字。但这就是我想做的。
我正在使用一个名为Engage forms的 WordPress 插件,它将提交的数据存储在 mySQL 数据库中。
棘手的部分是,由于某种原因,正在提交的数据没有被干净地存储。 (原因是开发人员为此添加了一些紫珀,我无法弄清楚他们如何在没有未知数字和字母的情况下打印出来。)
这就是我的意思:
我提交数据
- 名字:彼得
- 姓氏:斯托玛
- 电子邮件:storm@ren.com
- 电话:0736997385
以下是 mySQL 数据库内的数据的外观及其在网页上的打印方式:
非常困惑
a:4:{s:18:"名字25601459863853";s:5:"彼得";s:23:"lastnamn77151459863853";s:8:"Stormare";s:19:"电子邮件58511459863853";s: 13:"Storm@ren.com";s:21:"phone22101459863853";s:10:"0736997385";}
<小时/>我尝试清理数据
所以我尝试利用我的一点知识并尽可能多地获取:
$patterns = array();
$patterns[0] = '/[{}]/';
$patterns[1] = '/[a-x]:[0-9]/';
$patterns[2] = '/[0-9]:/';
$patterns[3] = '/[a-x]:/';
$patterns[4] = '/[":"]/';
$patterns[5] = '/;/';
$patterns[6] = '/namn[1]/';
$replacements = array();
$replacements[2] = '';
$replacements[1] = '';
$replacements[0] = '';
$replacements[3] = '';
$replacements[4] = ' ';
$replacements[10] = ''
echo preg_replace($patterns, $replacements, $leadslist);
现在应该输出:
名字25601459863853彼得姓氏77151459863853 Stormare电子邮件58511459863853 Storm@ren.com电话22101459863853 0736997385
<小时/>大问题
现在我是否可以定位名字和其余后面的随机数字,而无需删除电话号码? (示例电话号码为 0736997385。
<小时/>可能的解决方案
最佳解决方案atm由用户:Pei-turn提交。
他向我展示了如何删除任何大于 10 位数字的数字。在 Preg_replace() 中使用此模式
$patterns[3] = '/[0-9]{0,9}[0-9]{11,}/';
这非常有效。我唯一担心的是一些数据是否可能由于 future 奇怪的表单提交而被删除。
最佳答案
电话号码有 10 位数字,请尝试删除所有短于 10 和长于 10 的数字序列
[0-9]{0,9} [0-9]{11,}
关于php - 我可以从字符串中删除随机数字和字母吗?但只保留重要的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36444475/