删除标签内的空格而不删除\ n

时间:2016-01-30 10:34:34

标签: php regex

如何删除所有标记内的空格,但是,这很重要,不删除\ n

在这个例子中,我有两种类型的标签。我正在寻找可以在任何文本中使用任何类型标签的东西。

我有这个:

$text ="<p> some text </p><h2> some text</h2>\n
<p>some text </p><h2>some text </h2>";

我想要这个:

<p>some text</p><h2>some text</h2>\n 
<p>some text</p><h2>some text</h2>

我试过了:

$text = preg_replace ("/>\s+/", ">", $text);//remove space from start
$text = preg_replace ("/\s+</", "<", $text);//and end
echo $text;

问题是,它也删除了\ n。

7 个答案:

答案 0 :(得分:4)

您已关闭,请尝试使用:

current_user.players_users.pluck(:permission)

如果您想删除表格:

$text = preg_replace ("/> +/", ">", $text);//remove space from start
$text = preg_replace ("/ +</", "<", $text);//and end

$text = preg_replace ("/>\h+/", ">", $text);//remove space from start $text = preg_replace ("/\h+</", "<", $text);//and end 代表水平空间。

答案 1 :(得分:1)

这里&lt;和&gt;将被取代 试试

$text = preg_replace ("/> /", ">", $text);//remove space from start
$text = preg_replace ("/ </", "<", $text);//and end
echo $text;

答案 2 :(得分:0)

我认为你要找的东西是php中的trim-function。没有必要使用正则表达式。只需用你的字符串变量调用它就可以了

答案 3 :(得分:0)

要移除<p>/</p>标记之后/之前的空格,您可以使用:

$text = str_replace('<p> ', '<p>', $text);
$text = str_replace(' </p>', '</p>', $text);

你可以在一个函数

中打开它
function mytrim ( $text ) {
    $myChars = array('p', 'h2');

    foreach ( $myChars as $chr ) {
       $tag1 = '<' . $char . '> ';
       $tag2 = ' </' . $char . '>';
       $text = str_replace( $tag1, '<'. $char . '>', $text);
       $text = str_replace( $tag2, '</'. $char . '>', $text);
    }
    return $text;
}

使用你要编写的功能

$text = mytrim($text);

答案 4 :(得分:0)

尝试

$text = str_replace(array('> ',' <'),array('>','<'),$text);
echo $text;

不使用正则表达式。

答案 5 :(得分:0)

使用preg替换匹配\ r或\ n或两者并将其替换为空。

preg_replace( "/\r|\n/", "", $text);

删除缩进,这只是空白,可以使用php的函数修剪删除

$trimmed = trim($text);

此外,trim接受第二个参数,您可以传入该参数并进行修剪:

$trimmed = trim($text, '\t.');

例如,它将修剪制表符。

此代码对您有用

答案 6 :(得分:0)

另一种选择可能是:

    <?php
    $text ="<p> some text </p><h2> some text</h2> 
<p>some text </p><h2>some text </h2>";

    $result = preg_replace_callback(
        '|>([^\r\n]*?)<|',
        function ($hit) {
            return '>'.trim($hit[1]).'<';
        },
        $text
    );

    echo '<pre>' . htmlentities($result) . '</pre>';  // for testing only

    ?>