【问题标题】:Identifying and deleting line breaks识别和删除换行符
【发布时间】:2013-02-17 21:12:48
【问题描述】:

我正在使用 cURL 和 php 来用 DOM 解析一些 html 内容。然后我将内容作为字符串放入变量中并创建一个数组。

这是我的问题,我遇到了类似的问题

Array (
[firstname] => John
[lastname] =>


Doe
[occupation] =>
programmer

[location] => not far away
)

我得到了一些不是由 html 中的<br> 标签引起的换行符。我可以在代码中看到(空白)换行符,但没有标记。

在将其放入关联数组之前,我尝试使用 str_replace('\s', '', $firstname) 之类的代码,但它不起作用。我要补充一点,preg_replace('\s','', $firstname) 返回NULL

【问题讨论】:

  • 你想对换行符做什么?只是删除它们?
  • 是的。但是我用 \s 尝试了trimpreg_replace,但我无法摆脱它们。

标签: php regex preg-replace associative-array str-replace


【解决方案1】:

str_replace 不接受正则表达式。也许只是在...之后修剪数组

$array = array_map( 'trim', $array );

如果这不起作用,那么它们就不是正常的空间。使用...

preg_replace( '~^[\s]+|[\s]+$~', '', $firstname );

...在添加到数组之前。你忘记了分隔符。

【讨论】:

  • 感谢您的提示。但是,这是行不通的。结果是一样的。
  • 我很确定只要您的空格是由为trim() 函数列出的字符生成的,这将起作用:php.net/manual/en/function.trim.php
  • 我在这里问我的问题之前也试过这个。对于其他一些我没有在这里展示的例子,我不得不使用substr,因为其他函数没有删除换行符。然而,这个解决方案只有在我总是有规律的换行模式时才有效,但事实并非如此。
  • @Galen 你对一个不会删除单词之间空格的正则表达式有什么建议吗?
【解决方案2】:

尝试:

foreach($array as &$v){
    $v = preg_replace( '/(\n¦\r)+/s', '', $v);
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    相关资源
    最近更新 更多