省份是包含省份的所有个别记录的group_concat,其中一些是空白的。 所以,当我编码:
$provinces = ($row['provinces']); echo "<td>".wordwrap($provinces, 35, "<br />")."</td>";
这就是结果:
Minas Gerais ,,, Rio Grande do
Sul,Santa Catarina,Paraná,SãoPaulo
但是,当我尝试preg_replace掉一些空值时,用这个表达式添加一些空格:
$ provinces = preg_replace($ patterns, $ replaceces,($ row ['provinces']));
echo "<td>".wordwrap($provinces, 35, "<br />")."</td>";`
这就是我得到的! :(
米纳斯吉拉斯州,Rio Grande do
Sul,Santa
Catarina,Paraná,SãoPaulo
输出非常不自然。
BTW:以下是搜索和替换数组:
$patterns[0] = '/,,([,]+)?/'; $replaces[0] = ', ';
$patterns[1] = '/^,/'; $replaces[1] = '';
$patterns[2] = '/,$/'; $replaces[2] = '';
$patterns[3] = '/\b,\b/'; $replaces[3] = ', ';
$patterns[4] = '/\s,/'; $replaces[4] = ', ';
更新:我甚至试图将巴拉那改为巴拉那
米纳斯吉拉斯州,Rio Grande do
Sul,Santa
Catarina,Parana,São
圣保罗
答案 0 :(得分:1)
请勿使用
作为替代品。 wordwrap()
认为有6个字符。它不解释HTML实体。这就是为什么你的线条很有趣。如果您希望在
wordwrap()
替换空格
此外,您的第一个模式应该是:
// match one or more commas together
$patterns[0] = '/,+/';
答案 1 :(得分:0)
wordwrap()
真的有必要吗?听起来您将此内容呈现为某个固定宽度的表格单元格,并且您不希望单个条目跨行分割。
如果这个推断是正确的 - 并且如果你的条目实际上都没那么长,以至于强制它到一行会破坏你的布局 - 那么如何:逗号到数组中的explode()
,删除空格-only条目,将每个数组条目中的正常空格替换为
,将implode()
替换为,
(逗号后跟空格)。然后让渲染浏览器在任何需要的地方打破行。