Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式:如何在{}之间找到数字和字符_Php_Regex - Fatal编程技术网

Php 正则表达式:如何在{}之间找到数字和字符

Php 正则表达式:如何在{}之间找到数字和字符,php,regex,Php,Regex,我有一个类似这样的字符串:$str='&%\\'a4{=s{sa*}7s*&$db{abc654d3ws67}d(*$%\$c6'^*@“~\'a4\” 我需要从该字符串中找到与{abc654d3ws67}不同的$needle,并通过bin2hex($needle)预先放置它 示例:bin2hex('#')查找{的每个匹配项,后跟任意数量的字母或数字,后跟一个} $str = preg_replace_callback( '/\{([^a-z0-9]+)\}/i', function( $mat

我有一个类似这样的字符串:
$str='&%\\'a4{=s{sa*}7s*&$db{abc654d3ws67}d(*$%\$c6'^*@“~\'a4\”

我需要从该字符串中找到与
{abc654d3ws67}
不同的
$needle
,并通过
bin2hex($needle)
预先放置它


示例:
bin2hex('#')

查找
{
的每个匹配项,后跟任意数量的字母或数字,后跟一个
}

$str = preg_replace_callback( '/\{([^a-z0-9]+)\}/i', function( $match) { 
    return bin2hex( $match[1]); 
}, $str);

查找所有出现的
{
,后跟任意数量的字母或数字,后跟
}

$str = preg_replace_callback( '/\{([^a-z0-9]+)\}/i', function( $match) { 
    return bin2hex( $match[1]); 
}, $str);

根据措辞,这听起来像是你在寻找的:

<?php

$str='&%#^*@\"~ \'a4{=s{sa*}7s*&$db{abc654d3ws67}d(*$%#$c6\'#^*@"~ \'a4\"';
$pattern = '!^(.+)({abc654d3ws67})(.+)$!';
$tstring = preg_match($pattern,$str,$matches);
$newstring = bin2hex($matches[1]).$matches[2].bin2hex($matches[3]);

echo "<pre>$newstring</pre>";
?>

输出为:

2625235e2a405c227e202761347b3d737b73612a7d37732a26246462{abc654d3ws67}64282A24252324633627235E2A402227E202761345C22

旧代码抛出了一个T_LNUMBER警告

仅针对十六进制更新


输出为:

2625235E2A405C227E202761347B3D737B73612A7D37732A262462ABC6543WS6764282A24252324633627235E2A402227E202761345C22


根据措辞,这听起来像是你在寻找的:

<?php

$str='&%#^*@\"~ \'a4{=s{sa*}7s*&$db{abc654d3ws67}d(*$%#$c6\'#^*@"~ \'a4\"';
$pattern = '!^(.+)({abc654d3ws67})(.+)$!';
$tstring = preg_match($pattern,$str,$matches);
$newstring = bin2hex($matches[1]).$matches[2].bin2hex($matches[3]);

echo "<pre>$newstring</pre>";
?>

输出为:

2625235e2a405c227e202761347b3d737b73612a7d37732a26246462{abc654d3ws67}64282A24252324633627235E2A402227E202761345C22

旧代码抛出了一个T_LNUMBER警告

仅针对十六进制更新


输出为:

2625235E2A405C227E202761347B3D737B73612A7D37732A262462ABC6543WS6764282A24252324633627235E2A402227E202761345C22



你有试过什么吗?我试过
explode('{')
explode('}')
但这似乎是个坏方法所以
{abc654d3ws67}
变成了#?我想我不明白这个问题。
{abc654d3ws67}
在字符串中只出现一次?不,它不会出现多次。你有试过什么吗?我试过
explode('{')
explode('}')
但这似乎是一种不好的方法所以
{abc654d3ws67}
变成了#?我想我不明白这个问题。是不是
{abc654d3ws67}
在字符串中只出现一次?不,它不会出现多次。我想我们需要在某个地方加上“!”,因为我想找到不喜欢的
{abc654d3ws67}
,无论如何谢谢!什么是“不喜欢”“?如果你想排除字母和数字,我可以编辑我的答案。很抱歉我的英语不好!是的,我想排除字母和数字以及
{
}
中的
{abc654d3ws67}”
也是。再试一次,我编辑了我的答案并否定了字符组。@HamZa DzCyberDeV,在本例中,我的字符串中有大括号。我找到了另一个不包含
{abc654d3ws67}
的部分。很抱歉,我的英语又不好!我认为我们需要在某个地方放上“!”,因为我想找到与
不同的内容{abc654d3ws67}
,谢谢!什么是“不喜欢”?如果你想排除字母和数字,我可以编辑我的答案。很抱歉我的英语不好!是的,我想排除
{abc654d3ws67}中的字母和数字以及
{/code>和
}
也是。再试一次,我编辑了我的答案并否定了字符组。@HamZa DzCyberDeV,在这种情况下,我的字符串中有大括号。我找到了另一个不包含
{abc654d3ws67}
的部分。很抱歉,我的英语又不好!谢谢你的帮助!我会尝试的!谢谢你的帮助!我会尝试的!