标签: preg-replace

在 PHP 中将 HTML 重新处理为单行字符串的最佳方法是什么?

我正在开发一个 WordPress 插件,它将帖子和相关数据导出为制表符分隔的文本格式。它即将完成,但我正在努力寻找将 HTML 重新处理为单个字符串的最佳方法。

我使用 preg_replace 和 htmlentities 的组合,但它变得有点混乱。

我确信一定有一种首选方法可以做到这一点,所以我想我应该和你确认一下?我在谷歌上找不到任何合适的东西。

html php preg-replace str-replace

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

PHP 删除特定网站的链接但保留文本

例如,<a href="http://msdn.microsoft.com/art029nr/">remove links to here but keep text</a> but <a href="http://herpyderp.com">leave all other links alone</a>

我一直在尝试使用 preg_replace 来解决这个问题。我在这里进行了搜索并找到了解决部分问题的答案。

PHP的答案:从文本中删除特定域的所有超链接会删除指向特定 url 的链接,但也会删除文本。

http://php-opensource-help.blogspot.ie/2010/10/how-to-remove-hyperlink-from-string.html的网站从字符串中删除超链接,但我似乎无法修改模式以便它仅适用于特定网站。

php hyperlink preg-replace

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

删除最后一个下划线之前的所有字符串

我尝试在下划线破折号之后获取姓氏

$x = "John_Chio_Guy";
Run Code Online (Sandbox Code Playgroud)

输出应该是:Guy

这是我当前的代码:

$x = "John_Chio_Guy";
$x = preg_replace("/^[^_]*_\s*/", "", $x);
echo $x;
//output : Chio_Guy
Run Code Online (Sandbox Code Playgroud)

php preg-replace

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

preg_split 不在空间上分割

preg_split在用空格替换字母或数字以外的任何内容之后,我试图用任意数量的空格分割字符串...这是我的代码(包含一些调试内容):

$input = strtolower($data_current[0]);
$input = preg_replace('/[^a-z0-9]/', ' ', $input);
echo($input."\r\n");
$array = preg_split('/[\s]+/', $input, PREG_SPLIT_NO_EMPTY);
print_r($array);
die;
Run Code Online (Sandbox Code Playgroud)

假设 的值为$data_current[0]“hello world”。我得到的输出是这样的......

hello world
array
(
    [0] => hello world
)
Run Code Online (Sandbox Code Playgroud)

显然,我期望一个具有两个值的数组......“hello”和“world”。

这里到底发生了什么?如果有帮助的话,$data_current可以从 CSV 中读取数组(使用) ...fgetcsv

php regex preg-replace preg-split

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

在 preg_replace() 之前使用 strpos() 是否更快?

假设我们preg_replace在数百万个帖子字符串上使用它:

function makeClickableLinks($s) {
    return preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$1</a>', $s);
}
Run Code Online (Sandbox Code Playgroud)

假设所有帖子中只有 10% 包含链接,strpos($string, 'http') !== false在调用之前检查会更快preg_replace()吗?如果是这样,为什么?不在preg_replace()内部执行一些预测试?

php regex preg-replace strpos

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

PHP - preg_replace 和 UTF8

我当前正在从数据库中检索数据。我收到一个数组,其中包含带有 UTF8 编码值的“标题”索引。我想要的是使用这个值作为保存某些内容的文件的名称,所以我这样做:

\n\n
file_put_contents($filename, $content);\n
Run Code Online (Sandbox Code Playgroud)\n\n

$文件名在哪里

\n\n
\'-\' . $category[\'root\'] . \'-articles-\' . $category[\'id\'] . \'-\' . $this->Urlize($category[\'category\'])\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是“Urlize”的代码:

\n\n
private function Urlize($value)\n{\n    if ($value != null && trim($value) != \'\')\n    {\n        $value = preg_replace(\'/([\\[\\(].*[\\]\\)])/i\', \'\', $value);\n        $value = preg_replace(\'/[\\s]/i\', \'-\', $value);\n        $value = preg_replace(\'/[,!?.;:\\"\\\'&+\\/]/i\', \'-\', $value);\n        $value = preg_replace(\'/[-]+/i\', \'-\', $value);\n        $value = preg_replace(\'/(^-)/i\', \'\', $value);\n        $value = preg_replace(\'/-$/i\', \'\', $value);\n        $value = preg_replace(\'/[\xc3\xa9\xc3\xa8\xc3\xaa]/i\', \'e\', $value);\n        $value = preg_replace(\'/[\xc3\xa2\xc3\xa0]/i\', \'a\', $value);\n        $value = preg_replace(\'/[\xc3\xb6\xc3\xb4]/i\', \'o\', $value);\n …
Run Code Online (Sandbox Code Playgroud)

php utf-8 preg-replace

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

wp_nav_menu 过滤器,删除特定链接

我正在尝试从我的 wordpress 菜单中删除特定链接:

<li class="ubermenu-item ubermenu-item-type-post_type ubermenu-item-object-page ubermenu-item-1 ubermenu-item-level-0 ubermenu-column ubermenu-column-auto" ><a class="ubermenu-target ubermenu-item-layout-default ubermenu-item-layout-text_only" href="/first/" tabindex="0"><span class="ubermenu-target-title ubermenu-target-text">First</span></a></li>

<li class="ubermenu-item ubermenu-item-type-post_type ubermenu-item-object-page ubermenu-item-2 ubermenu-item-level-0 ubermenu-column ubermenu-column-auto" ><a class="ubermenu-target ubermenu-item-layout-default ubermenu-item-layout-text_only" href="/second/" tabindex="0"><span class="ubermenu-target-title ubermenu-target-text">Second</span></a></li>

<li class="ubermenu-item ubermenu-item-type-post_type ubermenu-item-object-page ubermenu-item-3 ubermenu-item-level-0 ubermenu-column ubermenu-column-auto" ><a class="ubermenu-target ubermenu-item-layout-default ubermenu-item-layout-text_only" href="/third/" tabindex="0"><span class="ubermenu-target-title ubermenu-target-text">Third</span></a></li>


function remove_link( $menu ) {
    return str_replace( '<a href="', '<a>', $menu );
}
add_filter( 'wp_nav_menu', 'remove_link' );
Run Code Online (Sandbox Code Playgroud)

我试图删除的链接已.ubermenu-item-3附加到该li元素。我该怎么做?

php regex wordpress preg-replace

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

使用正则表达式从 PHP 中的字符串中提取数字

我尝试使用preg_replace.

从这个字符串:

\n
                \t\n
                        \n
                                4 290 &euro;\n
                                \n
                            \n
                        \n
                    \n
Run Code Online (Sandbox Code Playgroud)

我尝试了以下模式:

  • (.*|\n)(\d+[[:blank:]]\d+)(.+|\n)
  • preg_replace('/(.*|\n)(\d+[[:blank:]]\d+)(.+|\n)/', '$2', $string);
  • preg_replace('/(\d+ \d+)/', '$1', $string);

我想输出4290。上面的代码都不适合我。

谢谢你的提示

php regex preg-replace

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

preg_replace - $1 返回捕获组以及其余部分

怎样才能用preg_replace95040只保留第一个字符?

这是我的尝试,应该像我的在线正则表达式所示那样工作

在此输入图像描述

但我拿回了原来的字符串。

$re = '/(^\d{1})/m';
$str = '9100';

$str = preg_replace($re, '$1', $str);
echo $str;  //returns 9100
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

在线Php


更新

我注意到以下代码返回9-->100而不是9

$re = '/(^\d)/';
$str = '9100';

$str = preg_replace($re, '$1-->', $str);
echo $str; //returns 9-->100
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况以及如何预防?

在线Php

php regex preg-replace

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

正则表达式:从 html 文件中删除所有注释,但保留相同数量的行

如果文件中的注释覆盖了其中的 6 行,则应删除该注释并替换为与注释行数相等的空行。

这是我的意思的一个小示范。给定的 file.html 有 10 行:

    line 1 : <!-- text
    line 2 :      text
    line 3 :      text
    line 4 :      empty line
    line 5 :      text
    line 6 : -->
    line 7 :empty line
    line 8 :text
    line 9 :empty line
    line 10 :text
Run Code Online (Sandbox Code Playgroud)

预期的输出将是:

    line 1 :empty line
    line 2 :empty line
    line 3 :empty line
    line 4 :empty line
    line 5 :empty line
    line 6 :empty line
    line 7 :empty line
    line 8 :text …
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace laravel

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