标签: preg-replace

在PHP中的preg_replace中使用$ variables

嗯...如何在调用preg_replace时使用变量?

这不起作用:

foreach($numarray as $num => $text)
    {
        $patterns[] = '/<ces>(.*?)\+$num(.*?)<\/ces>/';
        $replacements[] = '<ces>$1<$text/>$2</ces>';
    }
Run Code Online (Sandbox Code Playgroud)

是的,$num前面是一个加号.是的,我想" tag the $num as <$text/>".

php variables preg-replace

11
推荐指数
2
解决办法
2万
查看次数

如何在php中返回正则表达式匹配,而不是替换

我试图在HTML文本块中提取图像的第一个src属性,如下所示:

Lorem ipsum <img src="http://example.com/img.jpg" />consequat.
Run Code Online (Sandbox Code Playgroud)

我创建正则表达式以匹配src属性没有问题,但是如何返回第一个匹配的src属性,而不是替换它?

从倾注PHP手册开始,似乎preg_filter()可以解决问题,但我不能依赖于PHP> 5.3的最终用户.

所有其他PHP正则表达式函数似乎都是preg_match()的变体,返回一个布尔值,或preg_replace,它用某些东西替换匹配.有没有一种直接的方法来返回 PHP中的正则表达式匹配?

php preg-replace

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

Ruby中的preg_match_all和preg_replace

我正在从php过渡到ruby,我试图在ruby中找出php命令preg_match_all和preg_replace的同源性.

非常感谢!

php ruby ruby-on-rails preg-replace preg-match-all

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

用正则表达式替换HTML实体

我想在PHP中使用正则表达式来查找所有HTML实体,例如"&lt;br /&gt; &lt;br /&gt; ..etc. "为了从长字符串中删除它们.

php regex preg-replace

11
推荐指数
2
解决办法
7323
查看次数

从字符串中删除特殊字符

我正在使用一个函数从字符串中删除特殊字符.

function clean($string) {
   $string = str_replace('', '-', $string); // Replaces all spaces with hyphens.
   return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}
Run Code Online (Sandbox Code Playgroud)

这是测试用例

echo clean('a|"bc!@£de^&$f g');
Will output: abcdef-g
Run Code Online (Sandbox Code Playgroud)

参考SO答案.问题是如果'是我的字符串中的最后一个字符,就像我America'从excel文件中获取一个字符串,如果我把它放在这个函数中,它就不会逃脱'.当第一个和最后一个字符是'

php regex string preg-replace special-characters

11
推荐指数
2
解决办法
8万
查看次数

替换两个字符之间的每个实例

我在下面有以下数据{n}代表一个占位符.

{n}{n}A{n}{n}A{n}
{n}A{n}{n}{n}{n}A
{n}{n}A{n}A{n}{n}
{n}{n}{n}A{n}A{n}B
{n}A{n}{n}B{n}{n}
A{n}B{n}{n}{n}{n}
Run Code Online (Sandbox Code Playgroud)

我想用两个A字符替换占位符的每个实例,例如字母C.我为此编写了以下正则表达式,我正在使用preg_replace函数.

$str = preg_replace('~(?<=A)(\{n\})*(?=A)~', 'C', $str);
Run Code Online (Sandbox Code Playgroud)

问题是它将两个A之间的所有实例替换为一个C.我怎样才能修复我的正则表达式或preg_replace调用以替换占位符的每个单独实例C

这应该是我的输出.

{n}{n}ACCA{n}
{n}ACCCCA
{n}{n}ACA{n}{n}
{n}{n}{n}ACA{n}B
{n}A{n}{n}B{n}{n}
A{n}B{n}{n}{n}{n}
Run Code Online (Sandbox Code Playgroud)

但目前它输出了这个.

{n}{n}ACA{n}
{n}ACA
{n}{n}ACA{n}{n}
{n}{n}{n}ACA{n}B
{n}A{n}{n}B{n}{n}
A{n}B{n}{n}{n}{n}
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace

11
推荐指数
2
解决办法
434
查看次数

preg_replace密码过滤器

使用PHP,我想对密码使用preg_replace()过滤器,以便密码可用的唯一字符是US ASCII typable,减去控制代码和NULL.

什么是RegEx来实现我可以插入preg_replace()的那个?

编辑:

我被建议编辑这个问题,因为我现在"得到它"并且不会做这种非常不受欢迎的技术并且允许任何可打字的字符,即使是我可能没有在键盘上的字符,只要它们不是控制代码.

php regex passwords filter preg-replace

10
推荐指数
2
解决办法
2370
查看次数

使用preg_replace时如何增加替换字符串中的计数?

我有这个代码:

$count = 0;    
preg_replace('/test/', 'test'. $count, $content,-1,$count);
Run Code Online (Sandbox Code Playgroud)

对于每次替换,我获得test0.

我想得到test0,test1,test2等.

php regex string preg-replace

10
推荐指数
2
解决办法
9840
查看次数

如何从字符串中删除单引号和双引号

当我通过此函数运行包含双引号的短语时,它用quot替换引号.

我想完全删除它们(也是单引号).我怎样才能改变这个功能呢?

function string_sanitize($s) {
    $result = preg_replace("/[^a-zA-Z0-9]+/", "", $s);
    return $result;
}
Run Code Online (Sandbox Code Playgroud)

更新:

Example 1: This is 'the' first example 
returns: Thisis030the039firstexample 
Errors: Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '0' in C


Example 2: This is my "second" example
returns: Thisismyquotsecondquotexample
Errors: Invalid express in Xpath
Run Code Online (Sandbox Code Playgroud)

php preg-replace

10
推荐指数
2
解决办法
6万
查看次数

使用preg_replace()将CamelCase转换为snake_case

我现在有一个方法将我的驼峰案例字符串转换为蛇案例,但它分为三个调用preg_replace():

public function camelToUnderscore($string, $us = "-")
{
    // insert hyphen between any letter and the beginning of a numeric chain
    $string = preg_replace('/([a-z]+)([0-9]+)/i', '$1'.$us.'$2', $string);
    // insert hyphen between any lower-to-upper-case letter chain
    $string = preg_replace('/([a-z]+)([A-Z]+)/', '$1'.$us.'$2', $string);
    // insert hyphen between the end of a numeric chain and the beginning of an alpha chain
    $string = preg_replace('/([0-9]+)([a-z]+)/i', '$1'.$us.'$2', $string);

    // Lowercase
    $string = strtolower($string);

    return $string;
}
Run Code Online (Sandbox Code Playgroud)

我编写了测试来验证其准确性,并且它可以正常使用以下输入数组(array('input' => 'output')):

$test_values = [
    'foo' …
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace

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