标签: preg-replace

PHP 删除重复空格

为什么这不起作用?

$content=file_get_contents('whatever.txt');
$content=str_replace("\r\n","\n",$content); // Convert linebreaks
$content=str_replace("\n",' ',$content); // Remove linebreaks
$content=preg_replace('/\s+/',' ',$content); // Remove all duplicate spaces
$content=preg_replace('/[^a-zA-Z\s]/','',$content); // Remove all non-letters
$content=trim($content);
$content=explode(' ',$content);
Run Code Online (Sandbox Code Playgroud)

有些值仍然是空白:

例如

$content[123] = '';
Run Code Online (Sandbox Code Playgroud)

我是否理解错误?肯定应该没有吧?

php trim preg-replace

0
推荐指数
1
解决办法
1727
查看次数

PHP preg_replace 不匹配多行

帮助!我正在做一个替换,将括号内的块转换为 s 包围的块<div>。请看下文。

代码:

$data = '
<p>
{ 
asdf
asdf
asdf
}
</p>
';

echo preg_replace('%{(.*)}%m', '<div>\1</div>', $data);
Run Code Online (Sandbox Code Playgroud)

输出应该是:

<p>
<div>
asdf
asdf
asdf
</div>
</p>
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

php regex preg-replace

0
推荐指数
1
解决办法
3139
查看次数

删除开头和结尾的特殊字符

我想从字符串的开头和结尾删除特殊字符。

preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $String);
Run Code Online (Sandbox Code Playgroud)

这将从整个文件中删除特殊字符

我想要的是,如果字符串是 'SO@ ,它应该返回 SO

有什么帮助吗?

php regex string preg-replace

0
推荐指数
1
解决办法
3375
查看次数

preg_replace 不会从字符串中删除所有空白字符

我有以下代码,它应该在去除所有空格后比较 2 个字符串,这是该函数的简化版本:

\n\n
function not_same($type, $org_str1, $str2) {\n\n    $str1 = preg_replace(\'/\\s+/\', \'\', $org_str1);\n    $str2 = preg_replace(\'/\\s+/\', \'\', $str2);\n\n    $tries = [];\n    $tries[] = ["str1" => $str1, "str2" => $str2, "encoded1" => urlencode($str1), "encoded2" => urlencode($str2)];        \n\n    if($str1 == $str2) {\n        return true;\n    } else {\n        return false;\n    }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在使用它来检查计算机上的处理器是否与我的数据库中的匹配型号相同,$org_str1我的客户说它正在运行的计算机上的处理器也是如此,并且$str2该模型应该在我的数据库中使用CPU有。

\n\n

有时这些字符串具有不需要的空格,因此在比较过程中我删除了所有空格,以便比较文本本身。

\n\n

现在我收到计算机回复说CPU有问题,因为没有匹配,因为有一些空白没有被删除。

\n\n

在这种特定情况下,我尝试比较字符串 Client:Celeron\xc2\xae N3050与 Server: Celeron\xc2\xae N3050。\n我每次都会记录服务器上实际比较的内容,在我的客户端上它说它正在比较 Client:Celeron\xc2\xae N3050比较的内容,在我的客户端上它说它正在比较 Client:与 Server:Celeron\xc2\xaeN3050

\n\n

我尝试将这个空格复制并粘贴到str_replace() …

php whitespace preg-replace

0
推荐指数
1
解决办法
1049
查看次数

去除标签并用一个空格替换所有 br 和 p 标签

什么是去除所有的HTML标签和那里有正则表达式<br><p>标签更换一个单一的空间,并删除所有换行符?

例如:

<h1>Heading</h1>
<br>
<br />
<a href="#">hyperlink</a>
<p></p>
<p>paragraph1</p>
<p>paragraph2</p>
Run Code Online (Sandbox Code Playgroud)

应该变成:

Heading hyperlink paragraph1 paragraph2
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

$string = preg_replace( ["/<br\s*\/?>/i","/<\/p\s*>/i"]," ",$string);
$string = preg_replace(["/<\/?[^>]+>/", "/\r?\n|\r/"],"",$string);
Run Code Online (Sandbox Code Playgroud)

这给了我:

Heading              hyperlink         paragraph1 paragraph2 
Run Code Online (Sandbox Code Playgroud)

任何实际可行的单行或更优雅的解决方案的想法?

php regex preg-replace

0
推荐指数
1
解决办法
1103
查看次数

正则表达式仅保留字符串中的最后一个点

如何使用 preg_replace() 只保留最后一个点并从字符串中删除所有其他点。

示例字符串:

1.000.000.00

预期结果:

1000000.00

我的代码:

$pattern = '/[^0-9\.]/';
$amount = '1.000.000.00';
echo preg_replace($pattern, "", $amount);
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

编辑: 除了删除数字中的最后一个点并从字符串中删除任何不是数字或点字符的字符之外,我还需要删除点,如果它出现在数字末尾,如下所示,

1.000.000.00. after replacement should become 1.000.000.00
Run Code Online (Sandbox Code Playgroud)

除了当前的正则表达式之外,我还应该做什么[^0-9\.]来实现这一目标?

php regex preg-replace

0
推荐指数
1
解决办法
2690
查看次数

在html标记内部时不要替换任何内容.Preg Regex

我有这个正则表达式:

$buffer = preg_replace("/'([a-zA-Z0-9]+)'/iU",'$1',$buffer);
Run Code Online (Sandbox Code Playgroud)

当引号之间没有空格时,它会删除单引号.我也替换了一个html标签.我不希望它这样做.

这是一个例子

<div id="Foo"></div>
Run Code Online (Sandbox Code Playgroud)

应该:

<div id=Foo></div>
Run Code Online (Sandbox Code Playgroud)

<script>Foo='Bar'</script>
Run Code Online (Sandbox Code Playgroud)

不应该改变因此:

<script>Foo='Bar'</script>
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace

-1
推荐指数
1
解决办法
298
查看次数

URL中的preg_match ID

编辑:对不起,我的第一篇文章并不是很清楚.好吧,我有文本存储在数据库中,我喜欢处理它,并寻找我网站上的产品的任何链接,并将它们变成一个奇特的链接.下面是2个链接和我当前的exp.第二个链接(Link2)按预期工作并将值21传递给detailsLink()我的问题在于Link1它将值2传递给detailsLink()而不是21.我想完全忽略url,因为detailsLink()会重新创建带有产品评级/ cat等的链接.它也应该适用于http或https链接.

Link1:http://192.168.2.22/dev/details.php? id = 21 Link2:http://192.168.2.22/dev/details.php? id = 21&modules = info# Desc

$s = preg_replace("%(?<![=\]\'\"\w])https?://[^<>\s\'\",]*$ADDRESS\/details\.php\?id=([0-9]+)[^<>\s\'\",]+%ie", "detailsLink(\\1)", $s);
Run Code Online (Sandbox Code Playgroud)

$ ADDRESS的值是192.168.2.22/dev

php parameters url preg-replace

-1
推荐指数
1
解决办法
756
查看次数

php preg_replace h1.h2,h3,h4,h5,h6,<p style ="font-weight:bold;">

我在几个地方找到了将一个标签替换为另一个标签的方法......例如,替换<h1> </h1><p> </p>

不过,我想一个是preg_replace函数可以代替<h[1-6]> </h[1-6]><p style="font-weight:bold;"> </p>

php preg-replace

-1
推荐指数
1
解决办法
6392
查看次数

preg_replace有问题吗?

在管理使用preg_match_all之后,我想要用matchedText替换匹配的文本,但是它似乎不起作用.看看我的代码,我做错了什么?

    <?php
    $tweets = getTweets($profile->twitter_id);

    for($i=0;$i<4;$i++):
        // finds matches
        $num_matches = preg_match_all('/@\w+/', $tweets[$i]->description, $matches);

        if($num_matches):
            echo $num_matches.'<br />';
            for($c=0;$c<$num_matches;$c++):

                $subject = $tweets[$i]->description;
                $pattern = array();
                $pattern[$c] = $matches[0][$c];
                $replacement = array();
                $replacement[$c] = '<a href="https://twitter.com/#!/">'.$matches[0][$c].'</a>';

            endfor;
                echo preg_replace($pattern, $replacement, $subject).'<br /><br />';

        else:
            echo auto_link($tweets[$i]->description).'<br /><br />';
        endif;
    endfor;
?>
Run Code Online (Sandbox Code Playgroud)

php preg-replace

-1
推荐指数
1
解决办法
86
查看次数

标签 统计

php ×10

preg-replace ×10

regex ×5

parameters ×1

string ×1

trim ×1

url ×1

whitespace ×1